【发布时间】:2012-02-07 18:21:57
【问题描述】:
给定一个 3D 平面和其上的任意点,我想考虑新基的原点(0,0,0),可以:(A) 根据该信息定义基?并且 (B) 创建一个转换矩阵,让我可以在世界空间和新基础之间进行转换?
我可以假设变换是仿射的。
非常感谢!
【问题讨论】:
标签: 3d geometry plane coordinate-transformation
给定一个 3D 平面和其上的任意点,我想考虑新基的原点(0,0,0),可以:(A) 根据该信息定义基?并且 (B) 创建一个转换矩阵,让我可以在世界空间和新基础之间进行转换?
我可以假设变换是仿射的。
非常感谢!
【问题讨论】:
标签: 3d geometry plane coordinate-transformation
简短的回答是肯定的,但是由于您只有一个平面,因此新基础的方向将是任意的。
假设您有一个位于平面 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 齐次矩阵。 备注:
HTH
【讨论】: