如何计算观察平面中的点在场景中的平面上的逆正交投影?

How to compute the inverse orthogonal projection of a point in the viewing plane onto a plane in the scene?

假设我有一个观察平面 vn,方向为 q1,场景中有一个平面 un,方向为 q2

q1q2 是四元数。

如何找到未知点 ux, uy, uz 使得 proj_u_plane_vn 等于已知点 vx, vy, 0

找到相对方向问题会不会更简单q2-q1

现在我正在尝试用 i、j 和 k 值来做这件事,但这似乎有点矫枉过正,而且我没有看到不做反三角就弹出答案,不是我会介意,但是我正在寻找更优雅的解决方案。

提前致谢。 :)

您有以下值:

 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