3D数学基础--坐标系
2015-06-08 19:30
225 查看
坐标系:是计算机虚拟现实,建模的基础,只有定义了坐标系才能清楚描述物体之间几何关系(位置)。我们常用的坐标系有笛卡尔坐标系,圆柱坐标系,球坐标系等,但游戏里最常用的还是笛卡尔坐标系。选择不同的坐标系,其数学法则并没有变,并不影响底层的数学计算,影响的只是我们如何把这些数字在脑海里诠释为三维空间。坐标系一般是由原点和坐标轴定义,原点定义了坐标系的位置,坐标轴定义了坐标系的方向和刻度。
2D笛卡尔坐标系:用于2维空间,由两条相互垂直并带有方向的轴组成(x,y轴),它通过左右,上下旋转(90°),总共有8种方案。不过我们一般选择正方向为x轴向右,y轴向上做为标准方案。
3D笛卡尔坐标系:即比2D坐标系多了一条轴来描述深度位置(x,y,z轴),分为左手坐标系和右手坐标系两种形式:伸出右手,使食指向上(y正方向),其余三指向外(z正方向),拇指向右(x正方向),这就是右手坐标系的标准形式。对应的伸出左手,食指向上,其余三指向里,拇指向右,这就是左手坐标系的标准形式,它们的标准形式只是z轴的朝向不同。同样,它们通过旋转各有24种形式,总共48种方案可供选择。一般都是选择标准形式。
多坐标系:任何坐标系都是无限延伸的,理论上用一个坐标系就可以描述所有的点。但为了方便一个场景中我们常常使用了多种坐标系。而用数学计算多个点位置关系时,这些点位置都应该转换到同一个坐标系里进行。
世界坐标系:场景中最大的坐标系,它建立了描述其他坐标系所需要参考框架,从另一方面说,能够用世界坐标系描述其他坐标系的位置,而反过来则不行。
物体坐标系:每个物体都有它们独立的坐标系,当物体移动或改变方向时,和该物体相关联的坐标系将随之移动或改变方向。
摄像机坐标系:是一个特殊的物体坐标系,主要用于确定3D场景中的点是否在摄像机的观察范围和位置。
惯性坐标系:用于简化世界坐标系与物体坐标系的转换。惯性坐标系的原点与物体坐标系原点重合,轴与世界坐标系的轴平行。因此,从物体坐标系转换到惯性坐标系只需旋转,从惯性坐标系转换到世界坐标系只需平移。
嵌套式坐标系:一个物体的描述,对于它的各个部位分别使用不同的坐标系,这些坐标系和这个物体本身结构类似组成一个树状层次结构。用<3D数学基础图像与游戏开发>书上的解释是:
2D笛卡尔坐标系:用于2维空间,由两条相互垂直并带有方向的轴组成(x,y轴),它通过左右,上下旋转(90°),总共有8种方案。不过我们一般选择正方向为x轴向右,y轴向上做为标准方案。
3D笛卡尔坐标系:即比2D坐标系多了一条轴来描述深度位置(x,y,z轴),分为左手坐标系和右手坐标系两种形式:伸出右手,使食指向上(y正方向),其余三指向外(z正方向),拇指向右(x正方向),这就是右手坐标系的标准形式。对应的伸出左手,食指向上,其余三指向里,拇指向右,这就是左手坐标系的标准形式,它们的标准形式只是z轴的朝向不同。同样,它们通过旋转各有24种形式,总共48种方案可供选择。一般都是选择标准形式。
多坐标系:任何坐标系都是无限延伸的,理论上用一个坐标系就可以描述所有的点。但为了方便一个场景中我们常常使用了多种坐标系。而用数学计算多个点位置关系时,这些点位置都应该转换到同一个坐标系里进行。
世界坐标系:场景中最大的坐标系,它建立了描述其他坐标系所需要参考框架,从另一方面说,能够用世界坐标系描述其他坐标系的位置,而反过来则不行。
物体坐标系:每个物体都有它们独立的坐标系,当物体移动或改变方向时,和该物体相关联的坐标系将随之移动或改变方向。
摄像机坐标系:是一个特殊的物体坐标系,主要用于确定3D场景中的点是否在摄像机的观察范围和位置。
惯性坐标系:用于简化世界坐标系与物体坐标系的转换。惯性坐标系的原点与物体坐标系原点重合,轴与世界坐标系的轴平行。因此,从物体坐标系转换到惯性坐标系只需旋转,从惯性坐标系转换到世界坐标系只需平移。
嵌套式坐标系:一个物体的描述,对于它的各个部位分别使用不同的坐标系,这些坐标系和这个物体本身结构类似组成一个树状层次结构。用<3D数学基础图像与游戏开发>书上的解释是:
相关文章推荐
- RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法(java实现) 分类: Android JAVA 2015-06-08 19:30 26人阅读 评论(0) 收藏
- Android 线性布局(LinearLayout)相关官方文档 - 布局参数部分
- Maxstore OpenCart 2.X 自适应主题模板 ABC-0653
- 素数打表 cf 546D
- adb.exe,start-server' failed -- run manually if necessary
- C++对C的函数拓展 - 占位参数
- C++对C的函数拓展 - 占位参数
- 本地wordpress加载速度缓慢的解决方法和安装插件
- svn提交代码出错
- 用shell写的nginx服务程序
- 使用通知中心NSNotificationCenter实现不同的视图控制器的参数传递
- Max Points on a Line -- leetcode
- 解读BOM与COM
- SecureCRTPortable.exe 如何上传文件
- 最长公共子序列
- C++对C的函数拓展 - 默认参数
- C++对C的函数拓展 - 默认参数
- String、CString、char*、int、float、double相互转换
- UVa 12589 Learning Vector
- 关于 HorizontalScrollView 横向滚动,显示不全问题。