假设我有一个观看平面vn
,其方向为q1
,并且场景un
中的平面的方向为q2
。
q1
和q2
是四元数。
如何找到未知点ux, uy, uz
,使proj_u_plane_vn
等于已知点vx, vy, 0
?
通过找到相对方向q2-q1
?
现在我正在尝试用i,j和k值来做这件事,但它看起来有点矫枉过正,我没有看到答案弹出而没有做反向触发,不是我会介意,但我'我正在寻找更优雅的解决方案。
提前致谢。 :)
答案 0 :(得分: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。