三维坐标变换
- 格式:doc
- 大小:204.00 KB
- 文档页数:11
三维坐标系定义三维坐标系是一个由三个互相垂直的坐标轴组成的数学模型。
它在几何学、物理学、计算机图形学等领域中被广泛应用。
本文将从三维坐标系的定义、坐标表示、坐标变换、空间距离等方面进行详细阐述。
一、三维坐标系的定义三维坐标系由三个相互垂直的坐标轴组成,分别为x轴、y轴和z 轴。
通常情况下,我们将x轴水平向右延伸,y轴垂直向上延伸,z 轴垂直向外延伸。
这三个轴相交于原点O,形成了一个立体直角坐标系。
二、坐标表示在三维坐标系中,每个点都可以用一个有序三元组(x,y,z)来表示。
其中,x表示点在x轴上的坐标值,y表示点在y轴上的坐标值,z表示点在z轴上的坐标值。
这三个坐标值可以是正数、负数或零,表示点在各个轴上的位置关系。
三、坐标变换三维坐标系中的坐标变换包括平移、旋转和缩放等操作。
平移是指将点沿着各个轴的正方向移动一定的距离,可以用向量表示。
旋转是指将点绕着某个轴旋转一定的角度,可以用旋转矩阵表示。
缩放是指将点在各个轴上按比例进行拉伸或压缩,可以用缩放因子表示。
通过这些变换操作,我们可以实现对三维物体的位置、形状和大小等属性的改变。
四、空间距离在三维坐标系中,我们可以通过计算两个点之间的空间距离来衡量它们之间的位置关系。
常用的计算方法有欧氏距离和曼哈顿距离。
欧氏距离是指两点之间的直线距离,可以通过勾股定理计算得出。
曼哈顿距离是指两点之间在各个轴上坐标差的绝对值之和。
根据应用场景的不同,我们可以选择适合的距离度量方法来计算空间中的距离。
五、应用领域三维坐标系在几何学、物理学和计算机图形学等领域中有着广泛的应用。
在几何学中,我们可以用三维坐标系来描述和计算物体的位置、方向和形状等属性。
在物理学中,三维坐标系可以用来描述物体在空间中的运动和相互作用。
在计算机图形学中,三维坐标系可以用来表示和处理三维物体的图像数据,实现真实感的渲染和动画效果。
六、总结通过本文的介绍,我们了解了三维坐标系的定义、坐标表示、坐标变换、空间距离等基本概念。
三维坐标系变换三维坐标系变换可以理解为将一个三维点从一个坐标系转换到另一个坐标系中。
在实际应用中,我们常常需要对物体或者场景进行三维建模和渲染,而三维坐标系变换是不可或缺的一个基础环节。
本文将介绍三维坐标系变换的相关概念和常见应用,以及一些实用的解决方案。
一、常见的三维坐标系变换方式在三维坐标系变换中,常见的方式包括平移、旋转、缩放和仿射变换。
它们分别对应了三维空间中的平移、旋转、比例变化和直线间的关系变化。
在实际应用中,我们可以通过矩阵乘法的方式进行数学计算,也可以利用计算机图形学库中封装好的函数来实现。
1. 平移:将对象在三维坐标系中沿着某个方向移动一定的距离。
平移变换可以用一个形如平移向量的矩阵表示,在三维空间中的坐标变换表达式为:[x' y' z' 1] = [x y z 1] * [1 0 0 tx; 0 1 0 ty; 0 0 1 tz; 0 0 0 1]其中,tx、ty、tz 分别表示在 x、y、z 方向的平移距离。
2. 旋转:将对象绕三维空间中的某个坐标轴或者任意轴进行旋转变换。
如果绕 x 轴旋转,那么旋转变换矩阵为:[x' y' z' 1] = [x y z 1] * [1 0 0 0; 0 cos(theta) -sin(theta) 0; 0 sin(theta) cos(theta) 0; 0 0 0 1]同样的,绕 y 轴、z 轴旋转的矩阵也可以类似地表示。
对于绕任一轴的旋转,可以使用 Rodrigues 公式等数学方法来求解。
3. 缩放:将对象在三个方向上分别进行缩放变换,可以分别用三个缩放因子表示,对应矩阵表示为:[x' y' z' 1] = [x y z 1] * [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1]其中,sx、sy、sz 分别表示在 x、y、z 方向放缩的比例因子。
三维极坐标与直角坐标的互化
三维坐标系是我们在空间中描述物体位置和运动的重要工具。
其中,直角坐标系是最为常见的一种形式,它使用三个轴线(x、y、z)来描述物体在空间中的位置。
而另一种形式则是极坐标系,它使用半径、极角和高度三个参数来描述物体在空间中的位置。
在三维空间中,直角坐标系和极坐标系可以相互转换。
具体而言,我们可以通过以下公式将直角坐标系中的点转换为极坐标系中的点:r = √(x² + y² + z²)
θ = arccos (z/√(x² + y² + z²))
φ = arctan (y/x)其中,r表示点到原点的距离,θ表示点到z轴正方向的夹角,φ表示点到x 轴正方向的夹角。
反之,我们也可以通过以下公式将极坐标系中的点转换为直角坐标系中的点:x = r sinθ cosφ
y = r sinθ sinφ
z = r cosθ这种互化关系在三维图形的制作和计算机图形学中很常见。
因此,了解三维极坐标和直角坐标的互化关系对于理解和应用这些工具都是非常重要的。
第二章三维观察1.三维观察坐标系1.1观察坐标系为了在不同的距离和角度上观察物体,需要在用户坐标系下建立观察坐标系x v,y v,z v(通常是右手坐标系)也称(View Reference Coordinate)。
如下图所示,其中,点p0(x o, y o, z0)为观察参考点(View Reference Point),它是观察坐标系的原点。
图1.1 用户坐标系与观察坐标系依据该坐标系定义垂直于观察坐标系z v轴的观察平面(view palne),有时也称投影平面(projection plane)。
图1.2 沿z v轴的观察平面1.2观察坐标系的建立观察坐标系的建立如下图所示:图1.3 法矢量的定义观察平面的方向及z v轴可以定义为观察平面(view plane)N法矢量N: 在用户坐标系中指定一个点为观察参考点,然后在此点指定法矢量N,即z v轴的正向。
法矢量V:确定了矢量N后,再定义观察正向矢量V,该矢量用来建立y v轴的正向。
通常的方法是先选择任一不平行于N的矢量V',然后由图形系统使该矢量V'投影到垂直于法矢量N的平面上,定义投影后的矢量为矢量V。
法矢量U:利用矢量N和V,可以计算第三个矢量U,对应于x z轴的正向。
的指定视图投影到显示设备表面上的过程来处理对象的描述。
2.世界坐标系在现实世界中,所有的物体都具有三维特征,但是计算机本身只能处理数字,显示二维的图形,将三维物体和二维数据联系到一起的唯一纽带就是坐标。
为了使被显示的物体数字化,要在被显示的物体所在的空间中定义一个坐标系。
该坐标系的长度单位和坐标轴的方向要适合被显示物体的描述。
该坐标系被称为世界坐标系,世界坐标系是固定不变的。
OpenGL 中世界坐标用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上。
世界坐标系是右手笛卡尔坐标系统。
我们用这个坐标系来描述物体及光源的位置。
世界坐标系以屏幕中心为原点(0,0,0),长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。
三维坐标系的旋转变换三维坐标系的旋转变换是指通过旋转操作将一个坐标系转换为另一个坐标系的变换。
在三维空间中,我们可以通过旋转矩阵和欧拉角来描述三维坐标系的旋转变换。
1. 旋转矩阵:旋转矩阵是一个3x3的正交矩阵,表示坐标系旋转的变换。
旋转矩阵可以通过绕坐标轴的旋转角度来构造,例如绕x轴旋转θ角度的旋转矩阵为:|1 0 0||0 cosθ -sinθ||0 sinθ cosθ|类似地,绕y轴旋转θ角度和绕z轴旋转θ角度的旋转矩阵可以通过类似的方式构造。
当我们有一个向量[vx, vy, vz],通过乘以旋转矩阵,可以得到旋转后的向量[v'x, v'y, v'z],即:[v'x, v'y, v'z] = [vx, vy, vz] * 旋转矩阵2. 欧拉角:欧拉角是另一种描述三维坐标系旋转的方法。
它将旋转操作分解为绕不同坐标轴的连续旋转。
常见的欧拉角有三个分量,分别表示绕x轴、y轴和z轴的旋转角度。
我们通过旋转矩阵和欧拉角之间的转换来实现三维坐标系的旋转变换。
给定一个欧拉角(α,β,γ),我们可以分别构造绕x轴旋转α角度、绕y轴旋转β角度和绕z轴旋转γ角度的旋转矩阵。
然后将这三个旋转矩阵依次相乘,得到整体的旋转矩阵。
将向量[vx, vy, vz]乘以该旋转矩阵,即可得到旋转后的向量[v'x, v'y, v'z]。
总结起来,三维坐标系的旋转变换可以通过旋转矩阵或欧拉角来描述和实现。
旋转矩阵通过乘法操作直接作用在向量上,而欧拉角需要将旋转操作分解为三次绕不同坐标轴的旋转,最后再将三个旋转矩阵相乘。
三维极坐标与直角坐标的互化
在数学中,三维极坐标和直角坐标是两种常用的坐标系。
它们可以相互转换,使得在不同的坐标系下进行计算和描述更加方便。
三维极坐标通过距离、极角和方位角来描述一个点的位置,而直角坐标则通过三个互相垂直的坐标轴来表示点的位置。
要将一个点从三维极坐标转换为直角坐标,需要使用以下公式: x = r sin θ cos φ
y = r sin θ sin φ
z = r cos θ
其中,r是点到原点的距离,θ是极角,φ是方位角。
反之,将一个点从直角坐标转换为三维极坐标,需要使用以下公式:
r = √(x + y + z)
θ = arccos(z / r)
φ = arctan(y / x)
在三维空间中,使用不同的坐标系可以更加方便地描述和计算问题。
因此,掌握三维极坐标和直角坐标的互化方法是非常重要的。
- 1 -。
MATLAB 3维坐标系旋转变换在计算机图形学和工程领域,3维坐标系旋转变换是一个十分重要且常用的概念。
通过旋转变换,我们可以改变物体或者坐标系在3维空间中的位置和方向,从而实现对物体的视角变换、运动模拟等多种应用。
在MATLAB中,实现3维坐标系旋转变换可以使用旋转矩阵或者四元数等方式。
1. 旋转矩阵旋转矩阵是一种经典且直观的3维坐标系旋转变换方式。
其数学表达为一个3x3的矩阵,通过矩阵乘法将原始坐标点进行旋转变换。
在MATLAB中,可以使用内置的旋转矩阵函数如`rotx`、`roty`和`rotz`等来进行简便的旋转操作。
可以通过`rotx`函数实现绕X轴的旋转操作,并通过将原始坐标点与旋转矩阵相乘得到旋转后的坐标点。
需要注意的是,在使用旋转矩阵时,须考虑旋转矩阵的乘法顺序以及旋转角度的单位。
2. 四元数除了旋转矩阵,四元数也是一种常用的3维坐标系旋转变换方法。
四元数是一种扩展了复数的数学概念,可以用来表示3维空间中的旋转。
在MATLAB中,可以使用quatrotate函数来实现基于四元数的3维坐标系旋转变换。
与旋转矩阵相比,四元数能够避免万向节锁问题,并且在组合多个旋转操作时更加方便和高效。
3. 深入理解在进行3维坐标系旋转变换时,需要深入理解旋转矩阵或者四元数的数学原理和几何意义。
通过理解旋转矩阵的行列向量代表旋转轴和旋转后的坐标轴,或者理解四元数的虚部和实部代表旋转轴和旋转角度,可以更好地理解旋转变换的过程和效果。
通过编写MATLAB代码实现各种旋转操作,可以更好地体会旋转变换的灵活性和实用性。
4. 个人观点在实际工程和科研中,对3维坐标系旋转变换的理解和运用至关重要。
MATLAB作为一款强大的工程计算软件,提供了丰富的3维坐标系旋转变换函数和工具,可以帮助工程师和研究人员快速、准确地实现各种复杂的3维坐标系旋转变换任务。
通过学习和实践3维坐标系旋转变换,可以更好地理解和应用MATLAB的高级数学和图形处理功能,从而提升工程设计和科研实验的效率和质量。
三维坐标转换矩阵三维坐标转换矩阵是指将一个三维空间中的坐标系转换为另一个三维空间中的坐标系所需要的矩阵。
在计算机图形学、计算机视觉等领域,三维坐标转换矩阵是非常重要的基础知识。
1. 什么是三维坐标转换矩阵?在三维空间中,我们通常使用笛卡尔坐标系来描述一个点的位置。
一个点在笛卡尔坐标系中可以用三个数值表示,分别表示在 x、y、z 轴上的位置。
而不同的坐标系之间可能存在旋转、平移等变换,这时就需要使用三维坐标转换矩阵来描述一个点在不同坐标系下的位置。
2. 三维坐标转换矩阵有哪些类型?根据不同的变换类型,我们可以将三维坐标转换矩阵分为以下几类:(1)平移矩阵:用于描述一个点在 x、y、z 轴上平移后的位置。
(2)缩放矩阵:用于描述一个点在 x、y、z 轴上缩放后的位置。
(3)旋转矩阵:用于描述一个点在 x、y、z 轴上旋转后的位置。
(4)仿射矩阵:用于描述一个点在三维空间中的平移、缩放和旋转变换。
(5)投影矩阵:用于描述一个点在三维空间中的投影变换。
3. 如何计算三维坐标转换矩阵?对于不同类型的三维坐标转换矩阵,其计算方法也有所不同。
以平移矩阵为例,假设我们要将一个点从坐标系 A 移动到坐标系 B,其 x、y、z 轴上的平移距离分别为 Tx、Ty、Tz,则平移矩阵可以表示为:```1 0 0 Tx0 1 0 Ty0 0 1 Tz0 0 0 1```其中最后一行表示一个齐次坐标,通常情况下取值为 (0, 0, 0, 1)。
对于其他类型的三维坐标转换矩阵,其计算方法可以参考相关文献或教材。
4. 如何使用三维坐标转换矩阵?一旦得到了两个不同坐标系之间的转换矩阵,我们就可以使用它来将一个点从一个坐标系下的位置转换到另一个坐标系下的位置。
以平移矩阵为例,假设我们有一个点 P 在坐标系 A 中的位置为 (x, y, z),则其在坐标系 B 中的位置可以表示为:```[x' y' z' 1] = [x y z 1] * T```其中 T 表示从坐标系 A 到坐标系 B 的平移矩阵,* 表示矩阵乘法运算。
第六章 三维图形变换第一节 三维图形变换基础一、三维坐标系xyzxyz右手坐标系左手坐标系三维图形学中习惯上通常是采用右手坐标系。
xy 平面对应于视平面,z 轴垂直于视平面,指向视平面之外。
二、三维齐次坐标及变换矩阵三维图形变换也是基于矩阵运算进行。
矩阵运算的维数被扩展为四维。
三维坐标点采用4元齐次坐标表示:(x , y , z , 1),三维坐标与三维齐次坐标的相互转换如下:三维坐标(x , y ,z )——齐次坐标(x , y ,z , 1) 齐次坐标(x , y ,z , h )——二维坐标(x /h , y /h ,z /h ) 变换矩阵则为4X4的矩阵:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡s nm kr j i h q f e d p c b a 其中:平移变换第二节 三维几何变换一、三维基本变换 1. 平移变换⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1010000100001nmk T )1,,,()1,,,(n z m y k x T z y x +++=⋅2. 比例变换)1,,,()1,,,(1000000000000jz ey ax T z y x j e a T =⋅⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡= 3. 旋转变换三维的基本旋转变换分为三种,即绕三个坐标轴的旋转变换。
(1)绕z 轴旋转γ角旋转后z 值不变,x,y 值将发生改变,x,y 值的计算公式与平面旋转相同,即:zz y x y y x x ='+='-='γγγγcos sin sin cos 则变换矩阵为:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=1000010000cos sin 00sin cos γγγγT 有:)1,1,cos sin ,sin cos ()1,,,(γγγγy x y x z y x +-=T(2)绕x 轴旋转α角则旋转后x 的坐标值不变,y 和z 的坐标值将改变,相当于在yz 平面上绕平面原点进行旋转变换。
平面转转变换的公式为:ααααcos sin sin cos y x y y x x +='-='对应而来,这里y 对应于x ,z 对应y ,有:ααααcos sin sin cos z y z z y y +='-='则变换矩阵为:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=10000cos sin 00sin cos 00001ααααT )1,cos sin ,sin cos ,()1,,,(ααααz y z y x z y x +-=T(3)绕y 轴旋转β角这时,z 对应于x ,x 对应于y 。
三维齐次坐标变换三维齐次坐标变换是一种用于表示三维空间中的点、向量和平面的方法。
它基于四维向量表示法,将三维坐标扩展为四维齐次坐标。
三维齐次坐标变换包括平移、旋转、缩放和透视投影等操作。
平移变换:通过将平移向量添加到齐次坐标的前三个分量来实现平移。
假设平移向量为(Tx, Ty, Tz),则平移变换矩阵为:| 1 0 0 Tx || 0 1 0 Ty || 0 0 1 Tz || 0 0 0 1 |旋转变换:旋转变换有三种方式:绕X轴旋转、绕Y轴旋转和绕Z轴旋转。
每种旋转变换都可以由旋转矩阵表示。
绕X轴旋转的旋转矩阵为:| 1 0 0 0 || 0 cosθ -sinθ 0 || 0 sinθ cosθ 0 || 0 0 0 1 |绕Y轴旋转的旋转矩阵为:| cosθ 0 sinθ 0 || 0 1 0 0 ||-sinθ 0 cosθ 0 || 0 0 0 1 |绕Z轴旋转的旋转矩阵为:| cosθ -sinθ 0 0 || sinθ cosθ 0 0 || 0 0 1 0 || 0 0 0 1 |缩放变换:通过将缩放倍数乘以齐次坐标的前三个分量来实现缩放。
假设缩放倍数为(Sx, Sy, Sz),则缩放变换矩阵为:| Sx 0 0 0 || 0 Sy 0 0 || 0 0 Sz 0 || 0 0 0 1 |透视投影变换:透视投影变换用于将三维空间中的点映射到二维平面上。
透视投影变换矩阵由相机的内参、外参和投影方式决定。
综合变换:将平移、旋转和缩放变换结合在一起,可以得到综合变换矩阵。
对于任意的综合变换,可以通过将平移、旋转和缩放变换矩阵相乘得到综合变换矩阵。
以上就是三维齐次坐标变换的基本概念和常见变换方式。
在实际应用中,可以通过将变换矩阵应用于三维点或向量来实现相应的变换操作。
三维旋转坐标系变换旋转三维向量图中为单位向量,表⽰转轴。
将绕逆时针旋转⾓度得到。
可将分解为沿转轴的分量有其中为反对称矩阵。
那么式可写成:因此旋转作⽤可⽤⼀个矩阵表⽰。
旋转群旋转是线性变换,将变为1. 向量长度2.3. 相对⽅向1和2是等价的。
1推22推1因此可定义旋转群:旋转矩阵算符是线性的,可⽤矩阵表⽰,可得:即旋转矩阵是正交矩阵。
由旋转性质3(Special Orthogonal group),其中的special欧拉定理是说存在向量,使得旋转前后不变:就是转轴⽅向。
证明:只要证明有为1的特征值即可。
指数映射得:那么有得到:如果为常数,上述⽅程:其中矩阵的指数按泰勒级数定义。
这称为指数映射:还可以定义"⼤写的"指数映射:如果绕转轴转了⾓度上式按泰勒展开后得:这就是Rodrigues旋转公式。
推导过程⽤到了根据这个式⼦,⼜可写成:这就是式。
由可得:即:⼜有因此其中,这个矩阵的每⼀列都平⾏于,只要对⾮0转180度效果是⼀样四元数旋转公式为:旋转要求是单位四元数:还可以看到,⾃动保持了相对⽅向:其中第2和第5个等号是因为:指数映射得:两边左乘,得到:如果为常数,上式解得如果绕转轴转了⾓度“⼤写的”指数映射:旋转作⽤将式代⼊式,推导可得式,这就验证了的正确性。
四元数到旋转矩阵的转换由可以得到:旋转合成假设旋转2作⽤于旋转1之后。
对于旋转矩阵,对于四元数,因此,后旋转的都是乘在左边。
坐标系变换⽅向余弦矩阵(DCM)⽤G表⽰global,或者n系;L表⽰local,或者b系。
分别为向量在坐标系得:表⽰从到的坐标变换。
由对于⼀个与系固连的向量,经过主动旋转,得到⽽按定义:因此坐标变换矩阵与主动旋转矩阵欧拉⾓intrinsic rotation是指绕当前坐标系(⽽不是某个固定坐标系)的轴转动。
绕某轴逆时针旋转,得到。
对于绕轴旋转绕绕轴旋转,可得欧拉⾓和DCM的转换关系:若是⼩⾓度转动,各轴转过的⾓度有关。
三维坐标系旋转变换公式绕定轴解释说明1. 引言1.1 概述在三维空间中,我们经常需要对物体进行旋转变换。
三维坐标系旋转变换公式是一种用于描述和计算物体在三维空间中绕定轴进行旋转的数学表达式。
通过通过旋转角度和确定的轴向,我们可以准确地描述物体在空间中的姿态变化。
1.2 文章结构本文将详细介绍三维坐标系旋转变换公式以及围绕定轴进行旋转的推导过程。
首先,我们将解释旋转变换的概念,并介绍表示三维坐标系旋转的方法。
接下来,我们将讨论如何确定旋转轴和角度。
然后,我们将详细推导围绕定轴进行旋转的公式,并讨论其他情况下的公式推导。
最后,我们将通过实例分析和解释说明不同情况下该公式的应用原理和效果差异,并讨论多次连续旋转对结果产生的影响以及计算方法。
最后,在结论与总结部分,我们将总结主要观点和发现,并对该方法在实际应用中的局限性和改进方向进行讨论,并展望未来相关研究方向。
1.3 目的本文的主要目的是提供一个清晰和详细的理论基础,以帮助读者理解三维坐标系旋转变换公式及其应用。
通过对公式推导和实例分析的介绍,我们希望读者能够掌握使用该公式进行旋转变换的方法,并理解不同情况下公式应用的原理和效果差异。
同时,我们也将指出该方法在实际应用中存在的局限性,并提出改进方向。
最后,我们将展望未来相关研究的方向,为读者进一步深入研究提供参考。
2. 三维坐标系旋转变换公式2.1 说明旋转变换概念在三维空间中,我们经常需要对物体进行旋转操作。
旋转变换是指通过某个轴和角度对对象进行旋转的数学操作。
它可以改变对象在三维空间中的位置和方向。
2.2 表示三维坐标系旋转的方法在三维坐标系中,常用的表示旋转的方法有欧拉角和四元数。
欧拉角使用三个角度来表示旋转,分别是绕x、y 和z 轴的角度。
而四元数则是一种复数形式的表示方法,由一个实部和三个虚部组成。
2.3 确定旋转轴和角度的方式确定旋转轴和角度的方式有多种,其中包括通过已知两个坐标点确定一个固定轴上的向量作为旋转轴,并计算出与该向量垂直且夹角为指定角度的平面上的所有点;利用两个不同坐标系之间已知方向矢量之间夹角关系确定旋转轴和角度等方法。
测量坐标转换公式推导过程一、二维坐标转换(平面坐标转换)(一)平移变换。
1. 原理。
- 设原坐标系O - XY中的一点P(x,y),将坐标系O - XY平移到新坐标系O' - X'Y',新坐标系原点O'在原坐标系中的坐标为(x_0,y_0)。
2. 公式推导。
- 对于点P在新坐标系中的坐标(x',y'),根据平移的几何关系,我们可以得到x = x'+x_0,y = y'+y_0,则x'=x - x_0,y'=y - y_0。
(二)旋转变换。
1. 原理。
- 设原坐标系O - XY绕原点O逆时针旋转θ角得到新坐标系O - X'Y'。
对于原坐标系中的点P(x,y),我们要找到它在新坐标系中的坐标(x',y')。
- 根据三角函数的定义,设OP = r,α是OP与X轴正方向的夹角,则x = rcosα,y = rsinα。
- 在新坐标系中,x'=rcos(α-θ),y'=rsin(α - θ)。
2. 公式推导。
- 根据两角差的三角函数公式cos(A - B)=cos Acos B+sin Asin B和sin(A -B)=sin Acos B-cos Asin B。
- 对于x'=rcos(α-θ)=r(cosαcosθ+sinαsinθ),因为x = rcosα,y = rsinα,所以x'=xcosθ + ysinθ。
- 对于y'=rsin(α-θ)=r(sinαcosθ-cosαsinθ),所以y'=-xsinθ + ycosθ。
(三)一般二维坐标转换(平移+旋转)1. 原理。
- 当既有平移又有旋转时,先进行旋转变换,再进行平移变换。
2. 公式推导。
- 设原坐标系O - XY中的点P(x,y),先将坐标系绕原点O逆时针旋转θ角得到中间坐标系O - X_1Y_1,根据旋转变换公式,P在O - X_1Y_1中的坐标(x_1,y_1)为x_1=xcosθ + ysinθ,y_1=-xsinθ + ycosθ。
三维坐标系旋转变换公式三维坐标系旋转变换公式是在几何中常用的一种数学变换,它既可以描述平面的旋转,又可以根据旋转角度和旋转轴,表达把物体从一个坐标系移动到另一个坐标系的变换。
本文重点介绍三维坐标系旋转变换公式的含义及其计算方法,并结合实例对其应用进行讨论。
一、三维坐标系旋转变换公式的含义三维坐标系,也称空间坐标系,是指三个坐标轴构成的坐标系,包括X轴、Y轴和Z轴,直观上它仿佛是一个立方体,其中每个方向上的坐标变化都可以依据三维坐标系旋转变换公式表达出来。
三维坐标系旋转变换公式定义为:$$x =cos(θ)x-sin(θ)y$$$$y=sin(θ)x+cos(θ)y$$$$z =z,$$其中θ表示坐标系旋转变换时所采用的旋转角度,x和y表示原坐标系中的坐标,x和y表示变换后的坐标。
二、三维坐标系旋转变换公式的计算在三维坐标系中,当给定旋转角度和旋转轴时,可以根据三维坐标系旋转变换公式计算坐标变换。
旋转轴的方向可以用单位向量描述,单位向量的方向是指该向量在原点指向的方向,以及该向量的大小。
计算坐标变换时,首先需要计算旋转矩阵,旋转矩阵定义为:$$R=begin{bmatrix}cos(θ) & sin(θ) & 0-sin(θ) & cos(θ) & 00 & 0 & 1end{bmatrix}$$旋转矩阵可以表示坐标系旋转时的线性变换,在坐标变换时,可以将坐标矩阵与旋转矩阵进行乘积运算,即可得到变换后的坐标。
三、三维坐标系旋转变换实例假设存在一个三维坐标系,其中的坐标为(1,2,3),且坐标系旋转角度为90度,旋转轴方向为(1,0,0),则可以用三维坐标系旋转变换公式计算变换后的坐标。
首先,计算旋转矩阵,根据旋转变换公式可知,当θ=90°时,旋转矩阵为:$$R=begin{bmatrix}0 & 1 & 0-1 & 0 & 00 & 0 & 1end{bmatrix}$$然后,将待变换的坐标(1,2,3)与旋转矩阵进行乘积,可以得到变换后的坐标(2,-1,3)。
第二章三维观察1.三维观察坐标系1.1观察坐标系为了在不同的距离和角度上观察物体,需要在用户坐标系下建立观察坐标系x v,y v,z v(通常是右手坐标系)也称(View Reference Coordinate)。
如下图所示,其中,点p0(x o, y o, z0)为观察参考点(View Reference Point),它是观察坐标系的原点。
图1.1 用户坐标系与观察坐标系依据该坐标系定义垂直于观察坐标系z v轴的观察平面(view palne),有时也称投影平面(projection plane)。
图1.2 沿z v轴的观察平面1.2观察坐标系的建立观察坐标系的建立如下图所示:图1.3 法矢量的定义观察平面的方向及z v轴可以定义为观察平面(view plane)N法矢量N: 在用户坐标系中指定一个点为观察参考点,然后在此点指定法矢量N,即z v轴的正向。
法矢量V:确定了矢量N后,再定义观察正向矢量V,该矢量用来建立y v轴的正向。
通常的方法是先选择任一不平行于N的矢量V',然后由图形系统使该矢量V'投影到垂直于法矢量N的平面上,定义投影后的矢量为矢量V。
法矢量U:利用矢量N和V,可以计算第三个矢量U,对应于x z轴的正向。
的指定视图投影到显示设备表面上的过程来处理对象的描述。
2.世界坐标系在现实世界中,所有的物体都具有三维特征,但是计算机本身只能处理数字,显示二维的图形,将三维物体和二维数据联系到一起的唯一纽带就是坐标。
为了使被显示的物体数字化,要在被显示的物体所在的空间中定义一个坐标系。
该坐标系的长度单位和坐标轴的方向要适合被显示物体的描述。
该坐标系被称为世界坐标系,世界坐标系是固定不变的。
OpenGL 中世界坐标用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上。
世界坐标系是右手笛卡尔坐标系统。
我们用这个坐标系来描述物体及光源的位置。
世界坐标系以屏幕中心为原点(0,0,0),长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。
3. 世界坐标系到观察坐标系在三维观察流水线中,场景构造完成后的第一步工作是将对象描述变换到观察坐标系中。
对象描述的转换等价于将观察坐标系叠加到世界坐标系的一连串变换。
1. 平移观察坐标原点到世界坐标系原点。
2. 进行旋转,分别让x view 、y view 和z view 轴对应到世界坐标的x w 、y w 、z w 轴。
如果指定世界坐标点P=(x 0,y 0,z 0)为观察坐标原点,则将观察坐标系原点移到世界坐标系原点的变换是⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡---=T 1000100010001000z y x 将观察坐标系叠加到世界坐标系的组合旋转变换矩阵使用单位向量u 、v 和n 来形成。
该变换矩阵为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1000000n n n v v v u u u zy xz y xz y x R这里,矩阵R 的元素是uvn 轴向量的分量。
将前面的平移和旋转矩阵乘起来获得坐标变换矩阵:T ⋅=M R vc wc .=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⋅-⋅-⋅-1000000p n n n n p v v v v p u u u u zy x z y x z y x该矩阵中的平移因子按u 、v 、n 和P 0的向量点积计算而得,P 0代表从世界坐标系原点到观察原点的向量。
换句话说,平移因子实在每一轴上的负投影(观察坐标系中的负分量P 0)。
这些矩阵元素的取值为⋅-u u z u y u x z y x 0000---=P v z v y v x u z y x 0000---=⋅-P n z n y n x u zy x 0000---=⋅-P 矩阵将世界坐标系中的对象描述变换到观察坐标系。
4. 投影变换对象描述变换到观察坐标后,下一阶段是将其投影到观察平面上。
投影变换就是把三维立体(或物体)投射到投影面上得到二维平面图形。
平面几何投影主要指平行投影、透视投影以及通过这些投影变换而得到的三维立体的常用平面图形:三视图、轴视图以及透视图。
图形软件一般都支持平行投影和透视投影两种方式。
在平行投影中(parallel projection)中,坐标位置沿平行线变换到观察平面上。
图4.1给出了用端点坐标P1和P2描述的线段的平行投影。
平行投影保持对象的相关比例不变,这是三维对象计算机辅助绘图和设计中产生成比例工程图的方法。
场景中的平行线在平行投影中显示成平行的。
一般有两种获得对象平行视图的方法:沿垂直于观察平面的直线投影,或沿某倾斜角度投影到观察平面。
P2P1图4.1 线段到观察平面的平行投影在透视投影(perspective projection)中,对象位置沿会聚到观察平面后一点的直线变换到投影坐标系。
图4.2给出了用端点坐标P1和P2描述的线段的透视投影。
与平行投影不同的是,透视投影不保持对象的相关比例。
但场景的透视投影真实感教好,因为在透视显示中较远的对象减小了尺寸。
图4.2 线段到观察平面的透视投影5.正投影对象描述沿与投影平面法向量平行的方向到投影平面上的变换称为正投影(orthogonal projection;或正交投影,orthographic projection)。
这生成一个平行投影变换,其中投影线与投影平面垂直。
正投影常常用来生成对象的前视图、侧视图和顶视图,如图5.1所示,前、侧和后方向的正投影称为立面图,顶部正投影称为平面图。
工程和建筑绘图通常使用正投影,因为可以精确地绘出长度和角度,并能从图中测量出这些值。
图5.1 对象的正投影,显示了平面图和立面图6.斜投影斜投影是将三维形体向一个单一的投影面作平行投影,但投影方向不垂直于投影面所得到的平面图形。
常选用垂直于某个主轴的投影面,使得平行于投影面的形体表面可以进行距离和角度的测量。
斜投影的特点:既可以进行测量又可以同时反映三维形体的多个面,具有立体效果。
常用的斜轴测图有斜等测图和斜二测图,如下图所示。
图6.1 斜投影斜等侧投影:投影方向与投影平面成450的斜平行投影,它保持平行投影平面和垂直投影平面的线的投影长度不变。
斜二侧投影:与投影平面成arctg(1/2)角的斜平行投影,它使垂直投影平面的线产生长度为原1/2的投影线。
7.透视投影透视投影基本符合人类的视觉习惯,同样尺寸的物体离视点近的比离视点远的大,远到极点即消失。
以透视方式在计算机屏幕上观察物体,就如同透过一个完全透明的四方玻璃片看东西一样。
想象有一条从眼睛到物体的线,这条直线穿过玻璃,并在玻璃上涂上一个与物体颜色相同的点。
如果对所有穿过玻璃的线都这样做,并且保持眼睛不动,那么玻璃片上的图像就是透视变换后得到的图像,这块玻璃片就是窗口。
正如人眼睛不能聚焦到非常近或非常远的物体一样,透视投影有2个剪切面——近剪切面和远剪切面,分别将离视点太近和太远的物体部分或全部地剪切掉。
透视投影的特点是距离视点近的物体大,距离视点远的物体小,远到极点即为消失。
它的观察空间是一个顶部和底部都被切除掉的棱椎,也就是棱台。
OpenGL透视投影函数也有两个,其中一个函数是:void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);此函数创建一个透视投影的有限观察空间。
它的参数只定义近裁剪平面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near);最后一个参数far是远裁剪平面的Z负值,其左下角点和右上角点空间坐标由函数根据透视投影原理自动生成。
near和far表示离视点的远近,它们总为正值。
另一个函数是:void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);它也创建一个透视投影的有限观察空间,但它的参数定义于前面的不同,如图7-39所示,参数fovy定义视野在X-Z平面(垂直方向上的可见区域)的角度,范围是[0.0, 180.0];参数aspect是投影平面的纵横比(宽度与高度的比值);参数zNear和Far分别是远近裁剪面沿Z负轴到视点的距离,它们总为正值。
图7.1 透视投影的观察空间8.视口变换和三维屏幕坐标系视口变换类似于照片冲洗过程中的照片裁剪。
在计算机图形学中,视口是绘制图像的句型区域。
视口以窗口坐标来定义,它表示图像相对于窗口左下角的位置。
进行视口变换时,所有顶点都已经经过几何变换,并且位于取景器之外的图像已经被剪切掉了。
8.1 定义视口打开一个窗口时,系统自动地将视口设置为整个窗口的大小。
在OpenGL 中可以用glViewport()函数来设置一个较小的绘图区域,该函数的原型如下:void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);该函数的功能是设置窗口。
x ,y 指定一个视口像素矩形的左下角,其初始值是(0,0)。
width,height 指定一个视口的宽度和高度。
当一个OpenGL 环境被第一次连接到一个窗口时,参数width 和height 按此窗口的大小设置。
该函数为x 和y 指定了一种由标准化的设备坐标到窗口坐标的映射几何转化。
设(x nd ,y nd )是标准化的设备坐标,则窗口坐标(x w ,y w )可由下式求得:()x width x x nd w ++=21 ()y height x y nd w ++=21 视口的宽度和高度被默认为地截断到一定的范围,具体范围值由所处环境决定。
可调用函数glGet(GL_MAX_VIEWPORT_DIMS)查询这一范围值。
视口的高宽比一般与投影取景器的高宽比相同,否则会造成图像的变形。
在程序的运行过程中,可能会改变窗口的大小,因此程序应该始终检测到这种变化,并作相应的处理。
8.2 变换z坐标在视口变换中,z坐标或深度坐标被编码并被存储起来。
在OpenGL中可以使用glDepthRange()函数缩放z坐标的值,使它处于所要求的范围内。
该函数的原型为:void glDepthRange(GLclamped zNear,GLclamped zFar);该函数的功能是指定一种从归一化深度坐标到窗口深度坐标的映射方法。
zNear指定从最近的剪切平面到窗口坐标的映射,其缺省值为0.zFar指定从最远的剪切平面到窗口坐标的映射,其缺省值为1。
深度坐标在剪切和除以w后,其范围将变为[-1,1]。
其中-1和1分别与最近和最远的剪切平面相对应。