1 .基础知识
1.1矩阵乘法
行*列
C=[A1*b11 a2*b21 a3*b31、a1*b12 a2*b22 a3*b32、a1*b13 a2*b23 a3*b33]
例:
1 * 42 * 73 *1=21,1 * 52 * 83 *1=24,1 * 62 * 93 *5=39
结果是[ 21,24,39 ]
1.2求逆矩阵
按定义计算逆矩阵。
例:
用MatLab解
A=[456; 789; 15 );
b=inv(a )
B=
-2.58331.58330.2500
2.1667-1.1667-0.5000
0.0833-0.08330.2500
*b
ans=
1.0000-0.00000
-0.00001.00000
-0.0000-0.00001.0000
B*A
ans=
1.0000-0.0000-0.0000
01.0000-0.0000
001.0000
2 .世界坐标系与用户坐标的相互变换
如果将世界坐标系设为WCoord,用户坐标系设为UCoord,将从世界坐标系向用户坐标系的变换矩阵设为T1,则UCoord内的点Ptu在WCoord上的坐标Ptw=Pt*T1。 WCoord内点Ptw在UCoord中的坐标为Ptu=Pt*T1^-1。
用VX=(x1,x2,x3 ),vy=) y1,y2,y3 ),vz=) z1,z2,z3 ),坐标原点用p ) p1,p2,p3 ),用向量表示坐标系
注意:VX、VY、VZ都是单位向量
示例:用户坐标系为
VX=(0.7071067811,0.7071067811,0 ) )。
vy=; - 0.7071067811,0.7071067811,0 )
vz=(0,0,1 );
p=(1000,1000,1000 ) )。
用户坐标系下的点P1=(500,500,500 ) )。
求出世界坐标系下P1的坐标点Pw
解:也就是说,相当于先在世界坐标系中描绘P1点,平移旋转后变换为用户坐标系。
用Matlab求解
//用户坐标系的矩阵表示c
A=[0.70710678110.707106781100; -0.70710678110.707106781100; 010; 001 );
B=[1000; 0100; 010; 1000100010001];
C=A*B
C=
1.0e 003*
0.00070.000700
-0.00070.000700
000.00100
1.00001.00001.00000.0010
注意:点是齐次坐标点。
pt=[0001];
pt1=pt*C
pt1=
1000100010001
pt=[5005005001];
pt1=pt*C
pt1=
1.0e 003*
1.00001.70711.50000.0010
即pw=(1000,1707.1,1500 );
示例:将世界坐标系的点转换为用户坐标系
用户坐标系是相同的。
在世界坐标系中,pt=(-100,200,-300 ) )。
求出用户坐标系下pt的坐标Pu
解开:
用Matlab求解
A=[0.70710678110.707106781100; -0.70710678110.707106781100; 010; 001 );
B=[1000; 0100; 010; 1000100010001];
C=A*B;
是d=inv(c )
D=
1.0e 003*
0.0007-0.00070.00000
0.00070.00070.00000
000.00100
-1.41420-1.00000.0010
pt=[-100200-3001];
pt1=pt*D
pt1=
1.0e 003*
-1.34350.2121-1.30000.0010
得
pu (-1343.5029、212.1320、-1300.00 ) ) ) ) ) ) ) )。