2016-07-07 65 views
0

假設我有一個查看飛機vn,方向爲q1,場景un中的飛機的方向爲q2如何計算觀看平面上的一個點到場景中的平面上的逆正交投影?

q1q2是四元數。

我該如何找到未知點ux, uy, uz,使得proj_u_plane_vn等於已知點vx, vy, 0

問題找到相對方向q2-q1會更簡單嗎?

現在我試圖用i,j和k值來做這件事,但它看起來像是矯枉過正,我沒有看到答案彈出沒有做反向觸發,不是我會介意的,但我正在尋找更優雅的解決方案。

在此先感謝。 :)

+0

注:我認爲正確答案是u =(q1 * q2^-1)* v',其中ux,uy是'un'中的點,uz是從vx,vy,0到ux的距離,我,0。我還沒有驗證這一點,請糾正我,如果我錯了! – Nolo

回答

1

您有以下值:

vx, vy, vz; //These are the points in the viewing plane, which you know. 
q1, q2;  //The vectors describing the viewing and scene planes. 

當你懷疑,平面之間的把戲投影在使用相對方向。

您應該使用平面之間的偏移量(當您找到相對方向時)來處理場景平面,就好像它偏離了前平面(查看平面)一樣。這不僅更容易可視化,而且還會使您查找的答案更具相關性。

知道了這一點,可以使用您的相對取向在下面的等式來定義N:

q_proj = q - dot(q - p, n) * n 

一個點q =(X,Y,Z)的到由點p給定的平面中的投影=(a,b,c)和法線n =(d,e,f)。

請注意,這個答案是從這裏撕下:How do I find the orthogonal projection of a point onto a plane

+0

是的,我已經意識到這一點後想了一下。 :D我的四元數實現提供了一個矩陣表示,在計算q1(q2^-1) - > qt'後已經包含了z-hat('n'),那麼我只需旋轉'qt(p) - > p'' ,求解'nz * t - p'.z = 0',然後'q2(p'+(n)t) - > p'''得到場景中該點平面上該點的空間座標。 – Nolo