Ujj*_*wal 5 3d geometry point-clouds
我有一个点云,所有点都位于3D空间的平面上.我需要将每个点转换为2D坐标,反之亦然.
协调系统A中的(x,y,z)=> 坐标系B中的变换矩阵(T1)=>(x,y)
(X,Y)坐标系乙 =>变换矩阵(T2)=>(X,Y,Z)坐标系中一个
我需要T1和T2.坐标系B可以是任意参考系.
据我所知,所有点都在同一个平面上,你想减少尺寸,然后恢复坐标.
获得三个非共线点A,B,C.制作向量AB和AC.
正常到那个飞机是
N = AB x AC //cross product
Run Code Online (Sandbox Code Playgroud)
现在规范化矢量AB和N得到单位U = uAB和uN.构建第二个基本向量(它是单位并位于平面中)
V = U x uN
Run Code Online (Sandbox Code Playgroud)
现在你有四个基点 A, u=A+U, v=A+V, n=A+uN
转换(0,0,0), (1,0,0), (0,1,0), (0,0,1)应相应地将这些点映射到四联体.
现在关于仿射变换矩阵来进行这种映射:
[Ax ux vx nx] [0 1 0 0]
M * [Ay uy vy ny] = [0 0 1 0]
[Az uz vz nz] [0 0 0 1]
[1 1 1 1 ] [1 1 1 1]
Run Code Online (Sandbox Code Playgroud)
要么
M * S = D
M * S * Sinv = D * Sinv
M = D * Sinv
Run Code Online (Sandbox Code Playgroud)
因此计算逆矩阵S=[Ax ux...]并获得所需的矩阵M.
将M应用于平面中的任何点给出具有零z分量的新坐标.
将M的逆应用于(x,y,0)得到给定平面中的3D坐标.
枫叶表与点A=1,1,1 B=2,1,1 C=1,1,2 (in plane Y=1)
新坐标AA,BB,CC具有零z分量.
对于同一平面中的任意点,映射后的z分量也为零.
P:=vector([-2,1,7,1]);
> PP := multiply(M, P);
PP := [-3, 6, 0, 1]
Run Code Online (Sandbox Code Playgroud)