分享
 
 
 

向量几何在游戏编程中的使用6

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

<6>3-D空间中的基变换与坐标变换

-Twinsen编写

-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教

-我的Email-address: popyy@netease.com[url=mailto:popyy@netease.com][/url]

一、空间坐标系的基和基矩阵

在3-D空间中,我们用空间坐标系来规范物体的位置,空间坐标系由3个相互垂直的坐标轴组成,我们就把它们作为我们观察3-D空间的基础,空间中物体的位置可以通过它们来衡量。当我们把这3个坐标轴上单位长度的向量记为3个相互正交的单位向量i,j,k,空间中每一个点的位置都可以被这3个向量线性表出,如P<1,-2,3>这个点可以表为i-2j+3k。

我们把这3个正交的单位向量称为空间坐标系的基,它们单位长度为1且正交,所以可以成为标准正交基。三个向量叫做基向量。现在我们用矩阵形式写出基向量和基。

i = | 1 0 0 |

j = | 0 1 0 |

k = | 0 0 1 |

| i | | 1 0 0 |

B = | j | = | 0 1 0 |

| k | | 0 0 1 |

这样的矩阵我们叫它基矩阵。有了基矩阵,我们就可以把空间坐标系中的一个向量写成坐标乘上基矩阵的形式,比如上面的向量P可以写成:

P = C x B

=>

| 1 0 0 |

| 1 -2 3 | = | 1 -2 3 | x | 0 1 0 |

| 0 0 1 |

这样的话,空间坐标系下的同一个向量在不同的基下的坐标是不同的。

二、局部坐标系和局部坐标

和空间坐标系(也可以叫做全局坐标系)并存的称为局部坐标系,它有自己的基,这些基向量把空间坐标系作为参考系。比如

| x'| | -1 0 0 |

B' = | y'| = | 0 1 0 |

| z'| | 0 0 -1 |

| x''| | 2^½ /2 0 2^½ /2 |

B'' = | y''| = | 0 -1 0 |

| z''| | -(2^½) /2 0 2^½ /2 |

就是两个局部坐标系的基,如图:

现在我们可以把上面那个空间坐标中的向量P|1 -2 3|(以后都用矩阵表示)表示在不同的基下,我把它写成一个大长串的式子:

| x' | | x''|

P = | Px' Py' Pz' | x | y' | = | Px'' Py'' Pz'' | x | y''|

| z' | | z''|

这里| Px' Py' Pz'|是P在B'下的坐标,| Px'' Py'' Pz''|是P在B''下的坐标,我把它写的具体点吧:

| -1 0 0 | | 2^½ /2 0 2^½ /2|

| 1 -2 3 | = | -1 -2 -3 | x | 0 1 0 | = | 2*2^½ -2 2^½ | x | 0 -1 0 |

| 0 0 -1 | | -(2^½) /2 0 2^½ /2|

这就是说,在空间坐标系下面的向量| 1 -2 3 |在基B'下的坐标为|-1 -2 -3|,在B''下的坐标为| 2*2^½ -2 2^½ |。当然空间坐标系也有自己的基B|i j k|^T(因为是列向量,所以写成行向量的转置),但我们现在是拿它当作一个参考系。

在研究了局部坐标系之后,我现在要分析两个应用它们的例子,先来看

三、空间坐标系中一个点围绕任一轴的旋转

四、世界空间到相机空间的变换

空间坐标系XYZ,相机坐标系UVN。这时候相机空间的基(以下简称相机)在空间坐标系中围绕各个坐标轴旋转了一定角度<a,b,c>,然后移动了<x,y,z>。对于模型我们可以看作相对于相机的逆运动,即模型旋转了一定角度<-a,-b,-c>,然后移动了<-x,-y,-z>,可以把相机和物体的运动看成两个互逆的变换。这样,可以通过对相机的变换矩阵求逆来得到模型的变换矩阵。下面来具体看一下,如何得到相机变换矩阵,并且求得它的逆矩阵。

首先声明一下,对于一个模型的变换,我们可以给模型矩阵左乘变换矩阵:

M x P = P'

| A B C D | | x | | Ax + By + Cz + D |

| E F G H | | y | | Ex + Fy + Gz + H |

x =

| I J K L | | z | | Ix + Jy + Kz + L |

| M N O P | | 1 | | Mx + Ny + Oz + P |

也可以右乘变换矩阵:

P^T x M^T = P'^T

| A E I M |

| B F J N |

| x y z 1| x = |Ax+By+Cz+D Ex+Fy+Gz+H Ix+Jy+Kz+L Mx+Ny+Oz+P|

| C G K O |

| D H L P |

可以看出两种变换方式是一个转置关系,结果只是形式上的不同,但这里我们使用后者,即右乘变换矩阵,因为比较普遍。

很显然,相机的变换可以分成两个阶段:旋转和平移。我们先来看旋转。

在空间坐标系中,相机旋转之前世界坐标系xyz和相机坐标系u0v0n0的各个轴向量的方向相同,有关系:

| u0 | | x |

P = |Pu0 Pv0 Pn0| x | v0 | = |Px Py Pz| x | y |

| n0 | | z |

这里P是空间坐标系中的一个向量。|u0 v0 n0|^T是相机基矩阵,|Pu0 Pv0 Pn0|是P在相机基矩阵下的坐标。|x y z|^T是

世界基矩阵,|Px Py Pz|是P在它下面的坐标。有Pu0 = Px, Pv0 =Py, Pn0 = Pz。

相机和向量P都旋转之后,有关系:

| u | | x |

P' = |Pu0 Pv0 Pn0| x | v | = |Px' Py' Pz'| x | y |

| n | | z |

P'是P同相机一起旋转后的向量。|u v n|^T是相机旋转后的基矩阵,|Pu0 Pv0 Pn0|是P'在它下面的坐标,因为P是和相机一起旋转的,所以坐标不变。|x y z|^T仍为世界基矩阵,|Px' Py' Pz'|是P'在它下面的坐标。

现在看

| u | | x |

|Pu0 Pv0 Pn0| x | v | = |Px' Py' Pz'| x | y |

| n | | z |

因为|x y z|^T为一个单位阵,且Pu0 = Px, Pv0 =Py, Pn0 = Pz。 所以得到

| u |

|Px Py Pz| x | v | = |Px' Py' Pz'|

| n |

即|Px Py Pz|和相机一起旋转后变成|Px' Py' Pz'|,即P x R = P',而旋转变换矩阵R就是:

| u |

| v |

| n |

写成标准4x4矩阵:

| ux uy uz 0|

| vx vy vz 0|

| nx ny nz 0|

| 0 0 0 1|

平移矩阵T很简单:

| 1 0 0 0 |

| 0 1 0 0 |

| 0 0 1 0 |

| x y z 1 |

则相机矩阵就是:

| ux uy uz 0 | | 1 0 0 0 |

| vx vy vz 0 | | 0 1 0 0 |

C = R x T = x

| nx ny nz 0 | | 0 0 1 0 |

| 0 0 0 1 | | x y z 1 |

它的逆矩阵,即相机的逆变换矩阵为

| 1 0 0 0 | | ux vx nx 0 | | ux vx nx 0 |

| 0 1 0 0 | | uy vy ny 0 | | uy vy ny 0 |

C^-1 = T^-1 x R^-1 = x =

| 0 0 1 0 | | uz nz nz 0 | | uz vz nz 0 |

| -x -y -z 1 | | 0 0 0 1 | |-T.u -T.v -T.n 1 |

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有