最近在进行一项插值工作时用到了三维空间仿射变换矩阵,没有发现有现成的公式,下面进行了推导,方便大家使用。
仿射变换定义
有两个坐标系S1(X,Y,Z)和S2(x,y,z),S1中某一点P1(X,Y,Z)可以通过如下变换变换到坐标系S2中:
其中,P2为P1在S2中的坐标值,M为仿射变换矩阵。最一般的情况下,M表示如下:
如果坐标系S1和S2的原点重合,则M简化为3×3矩阵:
仿射变换矩阵的计算
下面给出坐标系原点重合时的情况:
假设S2的三个坐标基矢量在S1中的定义为:
u={X1,Y1,Z1},v={X2,Y2,Z2},w={X3,Y3,Z3}
则矩阵M为:
推导过程即求解如下方程组:
M.u = {1,0,0}
M.v={0,1,0}
M.w={0,0,1}
顺便给出点在线及面上投影计算公式:
1)点P(x,y,z)在直线AB上的投影,已知直线端点A、B坐标
2)点P(x,y,z)在面上的投影,面由点A和其法向量n确定