坐标和变换的数学基础(1)
2017-11-05 10:18
281 查看
通过本节可以了解到坐标的概念
线性变换的概念和计算方法
仿射变换
坐标转换的概念和计算方法
常见的坐标系包括:笛卡尔坐标系,极坐标系,球面坐标系等。
如下图所示的我们熟悉的,2D笛卡尔坐标系(来自wiki):
如下图所示的熟悉的3D笛卡尔坐标系(来自wiki):
定义坐标空间轴的向量 这些向量成为基向量,他们有名字,例如x,y,z;这些向量一般而言都是正交的,但不一定非得互相正交(只要线性无关即可,后面介绍),但是每一个维度必须只有一个轴。
坐标系的原点O 原点是导出其他点的参考点。
一个表明空间中点是否合法的区域 在此区域之外的点就不再合法。这个区域根据空间不同,可以是无穷的。
这里,维度已由基向量维数确定,合法区域一般是无穷的,但是在图形处理中某些坐标空间是有限的,例如规范化设备空间(后面其他文章会介绍)。作为一个了解,基向量不一定非得正交,如下图所示:
对于一般情况,我们只需要记住:
坐标系=(基向量,原点O)
判断一个坐标系是否属于右手系,可以拿出右手,然后右手的大拇指代表+x轴指向,食指代表+y轴指向,中指代表+z轴指向,你可以转动你的右手来匹配这个坐标系,如果能匹配则是右手坐标系,否则是左手坐标系。判断左手坐标系的方法类似。如下图所示为判断右手坐标系的方法(来自OpenGL coordinate system):
关于左右手坐标系理解还可以可参考下图(来自《3D数学基础》):
如上右图右手坐标系,这里拇指、食指、其余手指分别代表x,y,z轴的正方向。高等数学教材上使用的是右手坐标系。
左手右手规则在不同场合有着不同作用。上一节,我们使用右手规则判断了叉积的结果向量的方向。注意OpenGL中坐标系 OpenGL中的物体、世界、照相机坐标系都属于右手坐标系,而规范化设备坐标系使用左手坐标系。笼统地说OpenGL使用右手坐标系是不合适的。这些坐标系后面会介绍。关于这个问题可以参考SO.
线性变换的概念和计算方法
仿射变换
坐标转换的概念和计算方法
坐标系及坐标
坐标是在特定坐标系下表示物体位置的方法,一谈到坐标,必定是在某个坐标系下给定的。例如经纬度坐标是相对于地球的球面坐标系统给出的。坐标系则给出了一个参考框架,在这个框架里面,定义其他位置相对于一个起始点(这个起始点称作原点O)的位置。同一位置,在不同的坐标系下会有不同的坐标,例如你所在城市以经纬度坐标表示,是相对于地球坐标系来给定的,如果从太阳系或者银河系来给定,又会是另外一个不同的值。常见的坐标系包括:笛卡尔坐标系,极坐标系,球面坐标系等。
如下图所示的我们熟悉的,2D笛卡尔坐标系(来自wiki):
如下图所示的熟悉的3D笛卡尔坐标系(来自wiki):
定义坐标系
定义一个坐标系需要指定(参考自Objects in Motion):坐标系的维度 2D, 3D, 4D等等定义坐标空间轴的向量 这些向量成为基向量,他们有名字,例如x,y,z;这些向量一般而言都是正交的,但不一定非得互相正交(只要线性无关即可,后面介绍),但是每一个维度必须只有一个轴。
坐标系的原点O 原点是导出其他点的参考点。
一个表明空间中点是否合法的区域 在此区域之外的点就不再合法。这个区域根据空间不同,可以是无穷的。
这里,维度已由基向量维数确定,合法区域一般是无穷的,但是在图形处理中某些坐标空间是有限的,例如规范化设备空间(后面其他文章会介绍)。作为一个了解,基向量不一定非得正交,如下图所示:
对于一般情况,我们只需要记住:
坐标系=(基向量,原点O)
左手坐标系和右手坐标系
对于任意2个2D坐标系,我们通过旋转、移动翻转可以将两个坐标系xy轴的指向相同。但是对于3D坐标系,任意两个坐标系却不能等价。实际上,存在两种完全不同的3D坐标系:左手坐标系和右手坐标系。如果同属于左手坐标系或者右手坐标系,则可以通过旋转来重合,否则不可以。判断一个坐标系是否属于右手系,可以拿出右手,然后右手的大拇指代表+x轴指向,食指代表+y轴指向,中指代表+z轴指向,你可以转动你的右手来匹配这个坐标系,如果能匹配则是右手坐标系,否则是左手坐标系。判断左手坐标系的方法类似。如下图所示为判断右手坐标系的方法(来自OpenGL coordinate system):
关于左右手坐标系理解还可以可参考下图(来自《3D数学基础》):
如上右图右手坐标系,这里拇指、食指、其余手指分别代表x,y,z轴的正方向。高等数学教材上使用的是右手坐标系。
旋转正方向的判断
同样还存在一个左手规则和右手规则,可以用于判断当物体绕轴旋转时正方向的判定问题。对于左手规则,确定一个旋转轴后,左手握成拳头,拇指指向旋转轴的正方向,则其余手指弯曲方向即为旋转的正方向。从旋转轴正向末端来看,正向旋转是顺时针的。对于右手规则,有同样的方法。可参见下图:左手右手规则在不同场合有着不同作用。上一节,我们使用右手规则判断了叉积的结果向量的方向。注意OpenGL中坐标系 OpenGL中的物体、世界、照相机坐标系都属于右手坐标系,而规范化设备坐标系使用左手坐标系。笼统地说OpenGL使用右手坐标系是不合适的。这些坐标系后面会介绍。关于这个问题可以参考SO.
相关文章推荐
- 第4章 学习Shader所需的数学基础(下)(坐标空间及其变换)
- 坐标和变换的数学基础(2)
- OpenGL学习脚印: 坐标和变换的数学基础(math-coordinates and transformations)
- (转载)3D 图形编程的数学基础(3) 矩阵基本变换
- OSG数学基础:坐标系变换
- shader数学基础之顶点法向量从物体坐标系变换到世界坐标系
- 33D数学基础---矩阵和变换1
- OpenGL编程(八)3D数学与坐标变换
- 坐标系变换数学基础
- ArchieOpenGL基础教程第七课:坐标变换
- 3D基础:3D坐标变换在OpenGL 中的实践
- 【原】一步一步D3D_1.相关概念的简述(1.3_计算机图形学数学基础和图形变换)
- OSG数学基础:坐标系统
- shader学习基础之九详解uv坐标与加入数学算法控制uv坐标的原理
- OSG数学基础:坐标系统
- Direct3D基础(顶点坐标变换)
- OPENGL 点击与选取的基础---坐标变换
- 3D 图形编程的数学基础(3) 矩阵基本变换
- 【原】一步一步D3D_1.相关概念的简述(1.3_计算机图形学数学基础和图形变换)
- Step by step D3D_1.3_计算机图形学数学基础和图形变换