【问题标题】:How do I compute a new basis (transformation matrix) from a 3D plane and known origin?如何从 3D 平面和已知原点计算新的基础(变换矩阵)?
【发布时间】:2012-02-07 18:21:57
【问题描述】:

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

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

非常感谢!

【问题讨论】:

    标签: 3d geometry plane coordinate-transformation


    【解决方案1】:

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

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

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

    的 3 个向量

    我们已经有了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 是向量叉积

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      相关资源
      最近更新 更多