三维图形几何变换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1.2 三维图形几何变换
三维几何变换包括平移、旋转和变比。
三维几何变换可以表示为公式,或三维齐次坐标和4×4变换矩阵的乘积。
下面分别以公式,矩阵乘积和简记符号来描述三维几何变换。
并记变换前物体的坐标为x,y,z;变换后物体的坐标为x′,y′,z′。
一、平移
设Tx,Ty,Tz是物体在三个坐标方向上的移动量,则有公式:
x′=x+T x
y′=y+T y
z′=z+T z
矩阵运算表达为:
[x′ y′ z′ 1]=[x y z 1]
简记为:T(Tx,Ty,Tz)
二、旋转
旋转分为三种基本旋转:绕z轴旋转,绕x轴旋转,绕y轴旋转。
在下述旋转变换公式中,设旋转的参考点在所绕的轴上,绕轴转θ角,方向是从轴所指处往原点看的逆时针方向(图3.5(a),(b))。
1 绕z轴旋转的公式为:
x′=xcosθ-ysinθ
y′=xsinθ+ycosθ
z′=z
矩阵运算的表达为:
[x′ y′ z 1]=[x y z 1]简记为R z(θ)。
2 绕x轴旋转的公式为:
x′=x
y′=ycosθ-zsinθ
z′=ysinθ+zcosθ
矩阵运算的表达为:
[x′ y′ z′ 1]=[x y z 1]简记为R x(θ)
2 绕y轴旋转的公式为:
x′=zsinθ+xcosθ
y′=y
z′=zcosθ-xsinθ
矩阵的运算表达式为:
[x′ y′ z′ 1]=[x y z 1]
简记为Ry(θ)。
如果旋转所绕的轴不是坐标轴,而是一根任意轴,则变换过程变显得较复杂。
首先,对物体作平移和绕轴旋转变换,使得所绕之轴与某一根标准坐标轴重合。
然后,绕该标准坐标轴作所需角度的旋转。
最后,通过逆变换使所绕之轴恢复到原来位置。
这个过程须由7个基本变换的级联才能完成。
设旋转所绕的任意轴为p1, p2两点所定义的矢量。
旋转角度为 (图3.6)。
这7个基本变换是:
1 T(-x1,-y1,-z1)使p1点与原点重合(图3.6(b));
2 R x(α),使得轴p1p2落入平面xoz内(图3.6(c));
3 R y(β),使p1p2与z轴重合(图3.6(d));
4 R z(θ),执行绕p1p2轴的θ角度旋转(图3.6(e));
5 R y(-β),作3的逆变换;
6 R x(-α),作2的逆变换;
7 T(x1,y1,z1)作1的逆变换。
图3.6 绕任意轴P1P2旋转的前四个步骤
1 求R x(α)的参数:转角α是u在yoz平面的投影u′=(o,b,c)与z轴的夹角(图3 7(a)),故有:
cos =,其中d=
又因u′×u z=u x|u′||u z|sinα
其中u x是在x轴上的投影。
并且用行列式计算矢量积得:
u′×u z=u x·b,故得:
sinα=,得出R x(α)为:
R x(α)=
图3.7
2 求R y(β)的参数(图3.7(b)):经过R x(α)变换,p2已落入xoz平面,但p2点与x轴的距离保持不变。
因此,p1p2现在的单位矢量u″的z 方向分量之值即为u′之长度,等于d,β是u″与u z之夹角,故有:
cosβ==d
根据矢量积的定义,有:
u z|u″||u z|sinβ=u y·(-a)
因为|u″|===1,并|u z|=1,所以:
sinβ=-a
因此得到R y(β)为:
Ry(β)=
绕任意轴(x1 y1 z1)(x2 y2 z2)转动θ角的变换R(θ)为如下级联变换:
R(θ)=T(-x1,-y1,-z1)·R x(a)·R y(β)·R z(θ)·
R y(-β)·R x(-a)·T(x1,y1,z1)
三、变比
设sx,sy,sz是物体在三个方向的比例变化量,则有公式:
x′=x·sx,
y′=y·sy,
z′=z·sz,
矩阵运算的表达为
[x′ y′ z′ 1]=[x y z]
简记为S(sx,sy,sz)。
相对于某个非原点参数点(xf,yf,zf)进行固定点变比变换,是通过
如下级联变换实现的:
T(-xf,-yf,-zf)·S(sx,sy,sz)·T(xf,yf,zf)
四、三维几何变换的指令
和二维类似,三维几何变换也有三条指令,分别执行建立变换矩阵,积累变换和坐标变换的功能。
1 建立变换矩阵的指令:
creat-transformation-matrix-3(x f,y f,z f,s x,s y,s z,x r1,y r1,z r1,x r2,y r2,z
,α,t x , t y, t z, matrix);
r2
其中:x f,y f,z f是变比固定坐标;
s x,s y,s z是变比参数;
x r1,y r1,z r1,x r2,y r2,z r2是旋转所绕任意轴的起点与终点坐标;
α是平移参数;
matrix 是返回的4×4的变换矩阵。
2 积累变换的指令
accumulate-matrices-3(m1,m2,m);
其中m1,m2是输入矩阵,m是输出矩阵。
三个都是4×4的矩阵。
这条指令执行如下功能:
m=m1·m2
3 坐标变换的指令:
set-segment-transformation-3(Id,matrix);
其中Id是物体的编号,matrix是变换矩阵。
这条指令将Id所含的坐标逐一与matrix相乘,从而实现三维几何变换。