1

给定一个 3D 平面和它上面的任意点,我想考虑(0,0,0)一个新基础的起源,可以:(A)根据这些信息定义一个基础?并且 (B) 创建一个转换矩阵,允许我在世界空间和新基础之间进行转换?

我可以假设转换是仿射的。

非常感谢!

4

1 回答 1

3

简短的回答是肯定的,但是由于您只有一个平面,因此新基础的方向将是任意的。

假设您有一个位于平面P上的点k ,并且您希望点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 齐次矩阵。笔记:

  1. 上面的 . 是矢量点积
  2. 上面的 x 是向量叉积

高温高压

于 2012-02-07T19:44:33.440 回答