2010-02-10 106 views
3

如何在三維空間設計一個圓圈?在三維空間設計一個圓圈

對於二維空間中的圓,兩個成員就足夠了。

1 center;

2半徑;

但是在3D中,我該如何定義圓的方向和位置?

+0

circle or sphere? – RiddlerDev 2010-02-10 16:04:02

+0

您是否在詢問所有可能的不同選擇,或者我們會推薦什麼?因爲後者在很大程度上依賴於它的使用...... – tooleb 2010-02-10 16:25:00

回答

3

一種可能應包括一個與圓所在平面垂直的矢量。這樣做的好處是,如果您決定渲染圓形,則將使用法線來確定該圓形所定義的曲面之外的反射。

2

你真的想在3D空間中創建一個圓形(2D形狀)嗎?那麼這可能是解決方案:

  1. x,y,z:圓的中心座標
  2. dx,dy,dz:圓位於
  3. r平面的方向:半徑
+0

實際上'r'是多餘的,因爲它可以用'dx,dy,dz'編碼;) – 2010-02-10 16:09:31

+0

這絕對是一種打包機制,但它並不完全是冗餘的。必須從法向量計算半徑在某些情況下似乎很笨拙。冗餘將在使用x,y,z,x1,y1,z1,x2,y2,z2的方案中提供半徑,其中xa,ya,za是圓周邊上的點。效率較低的編碼,當然,但仍然是一種選擇。 – 2010-02-10 16:16:42

1

根據你想要做的對象 - 我有另一種選擇。 使用z = 0在xy平面中將圓圈建模爲單位圓。 通過對其進行縮放,平移和旋轉操作。 如果你打算對你的物體做很多矩陣運算,這可能是一條路。

您還可以將單位圓的位置,半徑和法線方向信息保持爲屬性。並有一種方法在兩種描述方法之間進行轉換。

Circle() - Default Unit circle at (0,0,0), radius 1, xy plane at z=0 
Circle(scale, translate, rotate) - my constructor 
Circle(location, radius, normal) - the other proposed constructor