我可以想到兩種創建Ellipse類的方法。如何用任何語言描述適用於3D(幾何,渲染器,物理)的橢圓
在數學中,橢圓由兩個焦點和主或半長軸長度描述。
的典型結構是這樣的:
- FOCUS1:的Vector3D
- FOCUS2:的Vector3D
- semiMajorAxis:雙
- planeNormal:的Vector3D
然而,我發現它是次優的,因爲99%的時間,我並不真正關心焦點。
看起來很難弄清楚如何與線條/光線相交或執行投影。
相反,我會將一個橢圓表示爲一個沿着矢量的拉伸圓。
的結構將是這樣的:
- 中心:的Vector3D
- 半徑:雙
- stretchVector:的Vector3D(沿其被應用的拉伸軸)
- stretchRate:雙
- planeNormal:Vector3D
想法是執行所有的測試/痕跡/投影,就好像它是針對一個圓圈完成的,只需在將值發送到我的圓圈方法之前進行縮放。
但是我缺乏這領域的經驗,所以我不知道哪一個是:
- 的更容易使用
- 更快的計算(這是3D,所以我需要好的perfs)
編輯:其實我需要橢圓形的體積的面(圓筒段,錐體秒而不是運動)。所以我的主要用途是光線投射或與線條,平面,圓形,其他橢圓等相交......
對於3D還需要法向矢量橢圓面中 – MBo
你也可以參考幾何工具/野生魔術庫在'的https://www.geometrictools。幾何工具爲 Computer Graphics'找到有效的方法 – MBo
是的,我忘了它。編輯;) – cronvel