本⽂主要参考。
主要内容
1. 坐标系与⼴义坐标系年代秀娄艺潇
2. 坐标变换
3. 仿射变换
4. 旋转、平移、伸缩与剪切
5. 绕任意轴旋转
注:Coordinate systems and frames,本⽂译为坐标系与⼴义坐标系。
⼀、坐标系与⼴义坐标系
1.1 坐标系旋转变换
向量 可以⽤⼀组基向量的线性组合表⽰,
其中,标量是的坐标(coordinates)。⼀般地,我们可以选择
。
假设我们想要将⼀组基向量转换为另⼀组基向量,我们可以将新的基向量表⽰为原始基向量的线性组合,
由此则可得到⼀个 的“基变换”矩阵
v ∈R 3v ,v ,v 123v =αv +11αv +22αv 33
α,α,α123v v =1(1,0,0),v =2(0,1,0),v =3(0,0,1)v ,v ,v 123u ,u ,u 123u =1a v +111a v +122a v 133u =2a v +211a v +222a v 233u =3a v +311a v +322a v 333
3×3M =
美服⎝⎛a 11a 21a 31a 12a 22a 32a 13a 23a 33⎠⎞
如果对于⼀个给定向量,在两个坐标系下的表⽰分别为
其中,,,那么
这表明
⼩结:如果知道两个坐标系系和系,并且从系到系之间的旋转变换关系,即 ,⽽同⼀点在系下的坐标
为,在系下的坐标为,则。
1.2 ⼴义坐标系射击类网游排行榜
然⽽,在计算机图形学中,上述三维坐标系的关系不够完善。尽管矩阵能够⽤来表⽰向量旋转和伸缩,但是不能⽤来处理点(及物体)的平移(translate)运动。
事实上,任意⼀个仿射变换都可以通过乘以⼀个的矩阵,再按照⼀个向量移动实现。然⽽,在计算机图像学中,我们更倾向于使⽤⼴义坐标系(frame)达到相同效果。
⼴义坐标系是⼀个更丰富的坐标系,我们将⼀个参考点添加进三个线性独⽴的基向量,向量和点分别表⽰为
我们可以使⽤向量与矩阵的概念重新表⽰向量和点,
系数和称为 和的其次坐标(homogeneous coordinates)。
⼆、 ⼴义坐标变换
假设我们想把⼀个坐标系 转换为⼀个新的坐标系 。把新的基向量及参考点使⽤原始的表⽰为,颖儿纪晓波
幸福网名v v =a v =T ⎝⎛v 1v 2v 3⎠
⎞b T
⎝⎛u 1u 2u 3⎠⎞a =(α,α,α)123T b =(β,β,β)123T a =T ⎝⎛v 1v 2v 3⎠⎞v =b =T ⎝⎛u 1u 2u 3⎠⎞b M
T ⎝⎛v 1v 2v 3⎠⎞a =M b b =T (M )a
T −1v u v u M u =Mv v a =
(α,α,α)123T u (β,β,β)123T b =(M )a T −1M 3×3P 0v ,v ,v 123v P v =P =P +
矛盾体0αv +αv +αv 112233αv +αv +αv 112233
v P v =(α α α 0)
P =123⎝
⎜⎜⎛
v 1v 2v 3P 0
⎠
⎟⎟⎞(α α α 1)
123⎝
⎜⎜⎛v 1v 2v 3P 0
⎠
⎟⎟⎞α,α,α,0123α,α,α,1123v P (v ,v ,v ,P )1230(u ,u ,u ,Q )1230
由此可以得到⼀个的矩阵
和三维向量坐标类似,我们使⽤和分别表⽰两个坐标系下的同⼀个点或向量,则
这表明
三、仿射变换
使⽤转置的矩阵
表⽰任意⼀个仿射变换,有12个⾃由度,可以看作⼀个由九个元素的矩阵和三个分量的平移向量组成。
最重要的⼏种仿射变换是旋转(rotations),伸缩(scalings)和平移(translations)。事实上,其他的仿射变换都可以通过这三者组合表⽰出来。
仿射变换对于线段同样适⽤。如果⼀条线段
使⽤其次坐标表⽰为
u =a v +a v +a v 1111122133u =a v +a v +a v 2211222233u =a v +a v +a v 1311322333Q =a v +a v +a v +P 0411*******
4×4⎝
⎜⎜⎛a 11a 21a 31a 41a 12a 22a 32a 42a 12a 23a 33a 430001
⎠
⎟⎟⎞a b a
=T ⎝
⎜⎜⎛v 1v 2v 3P 0
⎠
⎟⎟⎞b
=T ⎝
⎜⎜⎛u 1u 2u 3Q 0
⎠
⎟⎟⎞b M
T ⎝
⎜⎜⎛v 1v 2v 3P 0
⎠
⎟⎟⎞a =M b b =T (M )a
T −1M =
T ⎝
⎜⎜⎛a 11a 12a 130a 21a 22a 230a 31a 32a 3300
001
⎠
⎟⎟⎞3x 3P (α)=(1−α)P +0αP 1
对于另⼀个坐标系,将线段乘以⼀个仿射变换矩阵即可得到新的表⽰
同样地,仿射变换可以将三⾓形映射为三⾓形,将四⾯体映射为四⾯体。因此OpenGL⾥的许多物体都可以仅使⽤它们的顶点实现变换。
四、旋转、平移、伸缩和剪切
4.1 平移
平移(translation)是将⼀个点沿着特定⽅向移动⼀段距离的操作。将点沿着向量⽅向移动得到
我们可以把这个等式写为齐次坐标形式
其中
因此
容易得到实现 的变换矩阵 矩阵称为平移矩阵(translation matrix)。容易验证平移矩阵的逆为
p (α)=(1−a )p +0αp 1
P M M p (α)=(1−α)M p +0αM p 1
P d P =′P +d
p =p +d
′p =
p =
⎝
⎜⎜⎛x y z 1
⎠
⎟⎟⎞′d =
⎝
⎜⎜⎛x ′y ′z ′1
⎠
⎟⎟⎞⎝
⎜⎜⎛αx αy αz 0
⎠
⎟⎟⎞x =′x +αy =x
′y +αz =y ′z +αz
p =′T p T
T =T (α,α,α)=
x y z ⎝
⎜⎜⎛10000100
0010αx αy αz 1⎠
⎟⎟⎞T T (α,α,α)=−1x y z T (−α,−α,−α)
x y z
4.2 旋转
旋转(rotation)取决于旋转轴与绕旋转轴转动的⾓度。⾸先考虑在原来坐标系的⼀个平⾯内的旋转(注:例如绕z轴),如果点的极坐标为
旋转的⾓度记为,新的位置记为,那么
展开易得
或者
因此分别绕旋转得到的旋转矩阵为
(x ,y )x =ρcos ϕ
y =ρsin ϕ
θ(x ,y )′′x =′ρcos(ϕ+θ)
y =′ρsin(ϕ+θ)
x =′x cos θ−y sin θy =′x sin θ+y cos θ
=(x ′y ′
)(cos θsin θ−sin θcos θ)(x y )
z ,x ,y R =z R (θ)=
z ⎝⎜⎜⎛cos θsin θ00−sin θcos θ000
0100001
⎠
⎟⎟⎞R =x R (θ)=
x ⎝
⎜⎜⎛10000cos θsin θ00−sin θcos θ00
001
⎠
⎟⎟⎞
发布评论