【问题标题】:How to compute the inverse orthogonal projection of a point in the viewing plane onto a plane in the scene?如何计算观察平面中的点到场景中平面的逆正交投影?
【发布时间】:2016-07-07 00:05:23
【问题描述】:

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

q1q2 是四元数。

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

通过找到相对方向q2-q1,问题会更简单吗?

现在我正在尝试使用 i、j 和 k 值来做这件事,但这似乎有点矫枉过正,如果不进行反向触发,我看不到答案弹出,我并不介意,但我我正在寻找更优雅的解决方案。

提前致谢。 :)

【问题讨论】:

  • 注意:我认为正确的答案是u = (q1 * q2^-1) * v,其中 ux,uy 是un 中的点,而 uz 是从 vx, vy, 0 到 ux, uy, 0 的距离。我还没有验证,如果我错了,请纠正我!

标签: geometry projection quaternions orthographic


【解决方案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

【讨论】:

  • 是的,我想了一会儿才意识到这一点。 :D 我的四元数实现提供了一个矩阵表示,它在计算 q1 ( q2^-1) -> qt 之后已经包含 z-hat (n),然后我简单地旋转 qt(p) -> p',求解 n.z * t - p'.z = 0,然后 q2( p' + (n)t ) -> p'' 得到空间坐标场景中平面上的那个点。
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 2011-11-25
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2019-11-10
相关资源
最近更新 更多