2012-12-19 27 views
2

我有一個程序,我在3D空間中繪製一些形狀,例如矩形/圓形/三角形等,距離中心等距。在三維空間中設置對象的方向

的兩個點,其是等距離中心(0,0,0)實施例是

x1: 93, 313, 123 
x2: -263, -135, -186 

並且可以有更多的點爲好。

在這兩點,我的東西繪製形狀,如

glRectangle(x1, width, height);

形狀(矩形/三角形等)的問世很好的開始頂點(x1 or x2)等距從中心。但是,這些形狀在空間方向上與我正在尋找的方向錯誤。

我希望形狀所在平面的中心垂直於來自中心的假想線。這可能可以通過旋轉飛機來解決,但我不確定採用的方法。對於當前的例子,假設我有形狀的頂點,但是如何計算出矩形爲rotate that plane的平面,以使它垂直(來自空間中心的線條(0,0,0)

+0

我不知道glRectangle函數,但不能計算然後繪製一個四邊形或兩個三角形? – niktehpui

+0

@niktehpui:實際上沒有glRectangle函數。我寫了一個封裝來以類似的方式繪製矩形。 – user1240679

+0

@niktehpui:問題不是關於繪製retangles,而是定位位置/角度,使「矩形的平面」垂直於中心線。 – user1240679

回答

2

如果中心需要垂直於矢量C(座標中心和矩形中心間線),它應該這樣工作(僞代碼):

A = C x UP_VECTOR (CROSS-PRODUCT to calculate helper vector pointing in "sideway" direction of "rectangle") 
B = C x A (CROSS-PRODUCT to get the local "up/down" vector of the "rectangle") 
A = normalize(A) 
B = normalize(B) 
P1 = width/2 * A + height/2 * B 
P2 = -width/2 * A + height/2 * B 
P3 = -width/2 * A + -height/2 * B 
P4 = width/2 * A + -height/2 * B 

希望這是可以理解的,右(沒有嘗試過,並且找到正確的詞彙有些麻煩)

一些附加信息: A和B是輔助向量,它們是矩形上的局部向上和向左方向,歸一化後可以相應地計算矩形的4個點。 也要小心,如果沒有矩形顯示它可能與繪圖順序,所以只是相反的順序,然後如果正面和背面是錯誤的...

+0

@nikhetpui:我得到的想法是做跨產品來獲得一個垂直於兩個向量的向量,但我不確定'UP_VECTOR','向上/向下','側向'是什麼意思。 ; -/ – user1240679

+0

UP_VECTOR是你向上的方向,例如(0,1,0)或(0,0,1) – niktehpui

+0

如果沿矢量C(中心到直角)看,則A是矢量垂直向左,B是矢量垂直向上 – niktehpui

相關問題