如何从三维平面和已知原点计算新基(变换矩阵)? 给定一个3D平面和任意点,我想考虑一个新的基础的起源(0,0,0)< /代码>,有可能:(a)从这个信息中定义一个基础?(B)创建一个转换矩阵,允许我在世界空间和新基础之间转换

如何从三维平面和已知原点计算新基(变换矩阵)? 给定一个3D平面和任意点,我想考虑一个新的基础的起源(0,0,0)< /代码>,有可能:(a)从这个信息中定义一个基础?(B)创建一个转换矩阵,允许我在世界空间和新基础之间转换,3d,geometry,plane,coordinate-transformation,3d,Geometry,Plane,Coordinate Transformation,我可以假设变换是仿射的 非常感谢 简而言之,答案是肯定的,但由于你只有一个平面,新基的方向将是任意的 假设有一个点k位于平面p上,并且希望点k作为原点。你有P=(N,d)其中N是标准化平面法线,d是从原点到平面的距离 确定在此平面上具有任意方向的正交基的步骤 定义3个向量右R、上U和正常N 我们已经有了N,它只是平面的法线 U = (0,1,0) // If U is pointing in almost the same direction as N, change it if (U.N &g

我可以假设变换是仿射的


非常感谢

简而言之,答案是肯定的,但由于你只有一个平面,新基的方向将是任意的

假设有一个点k位于平面p上,并且希望点k作为原点。你有P=(N,d)其中N是标准化平面法线,d是从原点到平面的距离

确定在此平面上具有任意方向的正交基的步骤 定义3个向量右R、上U和正常N

我们已经有了N,它只是平面的法线

U = (0,1,0)
// If U is pointing in almost the same direction as N, change it
if (U.N > 0.7071) U = (0, 0, 1);
R = normalise (U x N)
U = normalise (N x R) // U was not orthonormal
现在定义一个3x3变换矩阵M,其中矩阵的3行分别为R、U和N

      R
M = ( U )
      N
现在让我们假设您想将平面上的点p变换为点p'

p' = M ( p - k )
如果你想用一个矩阵完成所有这些,你可以把M和平移向量k组合成一个4x4齐次矩阵。 注:

  • 上面的是矢量点积
  • 上面的x是向量叉积