SoRoMan

人若无名,便可专心练剑.

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  12 随笔 :: 1 文章 :: 41 评论 :: 0 Trackbacks

本文只是读者的一些关于左右坐标系的探讨,有待继续挖掘。
参考资料:Real-Time Rendering second edtion

一般左右坐标系的定义是这样说的:
在左手坐标系中,坐标轴的定义符合左手法则:左手四个手指的旋转方向从X轴到Y轴,大拇指的指向就是Z轴。但是没有给出数学上的定义。参考一些资料,关于左右坐标系的定义,涉及到向量叉积与左右坐标系的关系。

从基说起:
基是n维的欧式空间中的一组线性无关的向量V0,V1,...,Vn-1。关于线性无关向量组的定义可以去参考其他资料。

基与坐标系的关系:
如果一个基的行列式为正,那么它就可以形成一个右手坐标系。如果为负则形成左手坐标系。

向量叉积与三维左右坐标系的关系:
那么向量叉积与左右坐标系的关系有什么关系呢?由基与坐标系的关系可以推知,比如在三维欧式空间中,设有一个基(向量组)(Vx,Vy,Vz)存在,那么我们知道行列式的表达式|Vx,Vy,Vz|=(Vx*Vy).Vz,可以得知,当向量Vz的方向与向量Vx*Vy(Vx与Vy的叉积)的夹角在0-PI/2之间的时候,就一定会有(Vx*Vy).Vz>0,那么由基(向量组)Vx,Vy,Vz组成的坐标系就为右手坐标系。其实,说白了,就是向量叉积的方向规定了左右坐标系的定义。

三维x,y,z左右手坐标系特例:
令三维欧式空间空存在三向量Vx=(x,0,0)(x>0),Vy=(0,y,0)(y>0),Vz=(0,0,z)(注:这里规定z轴的正方向和向量Vx*Vy的方向一致。)此时,向量Vx*Vy的方向是符合右手坐标系的,因为向量Vx*Vy的方向与其自身的夹角为0,由(Vx*Vy).Vz = xyz可知,当z>0时,该向量组((x,0,0),(0,y,0),(0,0,z))构成右手坐标系。反之,若z<0,那么由(Vx*Vy).Vz = xyz<0可知,该向量组((x,0,0),(0,y,0),(0,0,z))构成左手坐标系。特例:(1,0,0),(0,1,0),(0,0,1)构成右手坐标系,(1,0,0),(0,1,0),(0,0,-1)构成左手坐标系。

posted on 2006-08-08 12:53 SoRoMan 阅读(4671) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理