我有一个法线为 (0,1,0) 的平面,即它是一个 xz 平面。我有了新的常态和距离。我想将我的原始平面转换为新平面的法线/距离。
为了计算旋转,我简单地取了两条法线的叉积,然后通过点积得到角度。然后我旋转了它。如何沿着新常态移动飞机?如果我的原始平面起源于 (0,0,0),我是否只需将其平移 (Nx*d, Ny*d, Nz*d) (其中 N = 新法线,d = 与原点的距离)?
我有一个法线为 (0,1,0) 的平面,即它是一个 xz 平面。我有了新的常态和距离。我想将我的原始平面转换为新平面的法线/距离。
为了计算旋转,我简单地取了两条法线的叉积,然后通过点积得到角度。然后我旋转了它。如何沿着新常态移动飞机?如果我的原始平面起源于 (0,0,0),我是否只需将其平移 (Nx*d, Ny*d, Nz*d) (其中 N = 新法线,d = 与原点的距离)?
如何沿着新常态移动飞机?
我认为你的提议是正确的。
假设您用单位法线和距离表示平面,距离是从原点到平面的距离。然后,您可以进行如下任何翻译,
m_distance += m_normal.Dot(translation); \\ translation will be (Nx*d, Ny*d, Nz*d) in your case.
m_normal; \\ normal stay the same, as translation won't change the direction of the plan.
在这种情况下,实际上 m_distance = m_distance + d。