给定一个 3D 平面和它上面的任意点,我想考虑(0,0,0)
一个新基础的起源,可以:(A)根据这些信息定义一个基础?并且 (B) 创建一个转换矩阵,允许我在世界空间和新基础之间进行转换?
我可以假设转换是仿射的。
非常感谢!
给定一个 3D 平面和它上面的任意点,我想考虑(0,0,0)
一个新基础的起源,可以:(A)根据这些信息定义一个基础?并且 (B) 创建一个转换矩阵,允许我在世界空间和新基础之间进行转换?
我可以假设转换是仿射的。
非常感谢!
简短的回答是肯定的,但是由于您只有一个平面,因此新基础的方向将是任意的。
假设您有一个位于平面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 齐次矩阵。笔记:
高温高压