原始系统中有4个非共面点(whelelx是第一个向量的长度,依此类推):(0,0,0), (lx,0,0), (0,ly,0), (0,0,lz)
以及他们在新系统中的双胞胎
^{pr2}$
仿射变换矩阵A应将初始点转换成它们的对点A * P = P'
用点列向量生成矩阵:|x1 x2 x3 x4| |x1' x2' x3' x4'|
A *|y1 y2 y3 y4| = |y1' y2' y3' y4'|
|z1 z2 z3 z4| |z1' z2' z3' z4'|
|1 1 1 1| |1 1 1 1|
|0 lx 0 0| |ox oxx + ox . .|
A *|0 0 ly 0| = |oy oxy + oy . .| // lazy to make last columns
|0 0 0 lz| |oz oxz + oz . .|
|1 1 1 1| |1 1 1 1|
要计算A,需要将两个sudes乘以p矩阵的逆A * P * P-1 = P' * Pinverse
A * E = P' * Pinverse
A = P' * Pinverse
所以计算p的逆矩阵,并将其与右侧矩阵相乘。在
编辑:Maple计算的逆矩阵是[[-1/lx, -1/ly, -1/lz, 1],
[1/lx, 0, 0, 0],
[0, 1/ly, 0, 0],
[0, 0, 1/lz, 0]]
得到的仿射变换矩阵是[[-ox/lx+(oxx+ox)/lx