我在平面上有一些 3D 点。该平面由法线和常数定义。我需要处理 2D 中的点,然后将它们转换回 3D。为了将点转换为 2D,我创建了一个四元数来将平面旋转到 xy 平面,我可以用它来变换点(只需丢弃 z 坐标)。修改 2D 中的点后,我想将它们转换回 3D。我注意到,同一个四元数,如果反转,会将点旋转回来,但我也需要以某种方式平移它,涉及平面常数,但我不知道该怎么做。谢谢!
我假设你的平面以 Hessian 范式给出,即点
x
位于平面上 iff:
dot(n, x) - c = 0
单位正常
n
。
当您应用旋转将平行于 xy 平面的平面与这些点对齐时,它们的 z 分量将等于
c
。因此,要从 2D 转换回 3D,您只需添加 c
的 z 分量并应用反向旋转。确保上述定义适用于您的情况。有时,使用 dot(n, x) + c = 0
形式,这会产生 -c
的 z 分量。
请注意,此过程在功能上是合适的,但计算量很大。另一种方法是在平面上定义 3D 基础,并使用该基础在 3D 和 2D 之间进行转换。您可以在此答案中找到示例。