三维坐标变换

合集下载

三维立体几何中的坐标定位与距离计算

三维立体几何中的坐标定位与距离计算

三维立体几何中的坐标定位与距离计算在三维立体几何中,坐标定位和距离计算是非常重要的概念和技巧。

通过准确的坐标定位,我们可以确定一个点在三维空间中的位置,而距离计算则可以帮助我们衡量两个点之间的距离。

本文将探讨三维立体几何中的坐标定位和距离计算,并介绍一些常用的方法和公式。

一、坐标定位在三维空间中,我们可以使用三个坐标轴(x、y、z)来定位一个点。

这些坐标轴相互垂直,并且通过原点(0,0,0)来确定位置。

例如,一个点的坐标可以表示为(x,y,z),其中x表示点在x轴上的位置,y表示点在y轴上的位置,z表示点在z轴上的位置。

通过坐标定位,我们可以准确地描述和定位一个点在三维空间中的位置。

这对于计算机图形学、建筑设计和物理模拟等领域非常重要。

例如,在计算机图形学中,我们可以通过给定的坐标来绘制一个点,从而创建出各种形状和物体。

二、距离计算在三维空间中,距离是一个重要的概念。

它可以帮助我们衡量两个点之间的距离,并在许多应用中起到关键作用。

距离的计算可以通过欧几里得距离公式来实现,即:d = √((x2-x1)² + (y2-y1)² + (z2-z1)²)其中,(x1,y1,z1)和(x2,y2,z2)分别表示两个点的坐标,d表示这两个点之间的距离。

距离计算在许多领域都有广泛的应用。

例如,在物理学中,我们可以使用距离计算来确定两个物体之间的距离,并根据它们之间的距离来计算力的大小。

在导航系统中,我们可以使用距离计算来确定两个地点之间的距离,并找到最短的路径。

三、坐标变换在三维立体几何中,坐标变换是一种常见的操作。

通过坐标变换,我们可以将一个点从一个坐标系转换到另一个坐标系。

这在计算机图形学和机器人学等领域中非常有用。

常见的坐标变换包括平移、旋转和缩放。

平移是将一个点沿着坐标轴移动一定的距离,旋转是将一个点绕着某个中心点旋转一定的角度,缩放是改变一个点的大小。

通过坐标变换,我们可以改变一个点在三维空间中的位置和大小,从而实现各种复杂的效果和动画。

matlab 3维坐标系旋转变换

matlab 3维坐标系旋转变换

matlab 3维坐标系旋转变换摘要:1.引言2.matlab 中3 维坐标系的旋转变换a.3 维坐标系旋转的必要性b.旋转矩阵的生成c.旋转矩阵的应用3.实例演示a.绕x 轴旋转b.绕y 轴旋转c.绕z 轴旋转4.总结正文:在MATLAB 中,对3 维坐标系进行旋转变换是一个常见的操作。

这主要是因为在三维空间中,我们需要对物体进行旋转来观察其不同角度的形态,或者为了将物体的某一部分朝向我们进行操作。

因此,对3 维坐标系进行旋转变换是十分必要的。

在MATLAB 中,我们可以通过生成旋转矩阵来实现对3 维坐标系的旋转变换。

旋转矩阵是一个4x4 的矩阵,它可以通过以下方式生成:R = [cos(θ), -sin(θ), 0, p.x];R = [sin(θ), cos(θ), 0, p.y];R = [0, 0, 1, p.z];R = [-sin(θ), cos(θ), 0, p.x];其中,θ是旋转的角度,p 是旋转轴的位置,x、y、z 是物体的坐标。

通过这样的矩阵运算,我们可以实现对物体在三维空间中的旋转变换。

在实际应用中,我们可以使用MATLAB 提供的旋转函数来实现对3 维坐标系的旋转变换。

例如,我们可以使用`rotate3d()`函数来实现绕x 轴、y 轴和z 轴的旋转。

具体的函数调用形式如下:B = rotate3d(A, angle, axis)其中,A 是待旋转的3 维坐标系,angle 是旋转的角度,axis 是旋转轴的方向。

通过调整angle 和axis 的值,我们可以实现对3 维坐标系的不同角度和方向的旋转变换。

总的来说,MATLAB 中3 维坐标系的旋转变换是一个十分重要的操作。

坐标变换实验报告

坐标变换实验报告

坐标变换实验报告坐标变换实验报告引言:在物理学和工程学中,坐标变换是一种常见的操作,用于将一个坐标系中的点转换到另一个坐标系中。

坐标变换在计算机图形学、机器人学以及航天航空等领域中广泛应用。

本实验旨在通过实际操作,深入理解坐标变换的原理和应用。

一、实验目的本实验的目的是通过实际操作,掌握坐标变换的基本原理和方法,能够在二维和三维空间中进行坐标变换,并应用于实际问题中。

二、实验原理1. 二维坐标变换在二维空间中,坐标变换可以通过平移、旋转和缩放等操作实现。

平移操作将点沿着给定的平移向量移动,旋转操作将点绕着给定的旋转中心旋转一定角度,缩放操作将点按照给定的比例进行缩放。

2. 三维坐标变换在三维空间中,坐标变换除了平移、旋转和缩放外,还可以包括投影和镜像等操作。

投影操作将三维点映射到二维平面上,镜像操作将点关于给定平面进行对称。

三、实验步骤1. 二维坐标变换实验首先,我们选择一个二维平面上的点P(x,y),然后进行平移、旋转和缩放操作。

通过实际操作,我们可以观察到点P在坐标变换后的位置变化。

2. 三维坐标变换实验接下来,我们将实验扩展到三维空间。

选择一个三维空间中的点P(x,y,z),进行平移、旋转、缩放、投影和镜像等操作。

通过实际操作,我们可以观察到点P 在坐标变换后的位置和形状变化。

四、实验结果与分析通过实验,我们可以得到坐标变换后点的新坐标。

通过对比变换前后的坐标,我们可以分析坐标变换对点的位置和形状的影响。

在二维坐标变换实验中,我们可以观察到平移操作将点在平面上移动,旋转操作将点绕着某个中心旋转,缩放操作将点按照比例进行缩放。

这些操作可以用于计算机图形学中的图形变换。

在三维坐标变换实验中,我们可以观察到平移操作将点在空间中移动,旋转操作将点绕着某个中心旋转,缩放操作将点按照比例进行缩放。

投影操作将三维点映射到二维平面上,镜像操作将点关于给定平面进行对称。

这些操作在机器人学和航天航空等领域中具有重要的应用价值。

三维坐标转换矩阵

三维坐标转换矩阵

三维坐标转换矩阵
三维坐标转换矩阵是在三维空间中进行坐标变换时所使用的一种数学工具。

通过矩阵的乘法运算,我们可以实现对三维坐标系中的点进行旋转、平移、缩放等操作,从而实现各种复杂的变换效果。

在三维空间中,我们通常使用三个坐标轴来描述一个点的位置,分别是x轴、y轴和z轴。

而三维坐标转换矩阵则是一个3x3的矩阵,它包含了对应于x、y、z轴的三个基向量,通过这些基向量的组合,我们可以将一个点从一个坐标系变换到另一个坐标系。

三维坐标转换矩阵的主要作用是将一个点的坐标从一个坐标系转换到另一个坐标系。

这种转换通常涉及到旋转、平移和缩放等操作,而这些操作可以通过矩阵的乘法运算来实现。

具体来说,我们可以通过一个3x3的矩阵将一个点的坐标转换为另一个坐标系中的坐标,从而实现坐标的变换。

在三维计算机图形学中,三维坐标转换矩阵是非常重要的。

通过矩阵的乘法运算,我们可以实现对三维模型的各种变换操作,如旋转、平移、缩放等。

这些变换可以让我们实现各种炫丽的效果,比如立体旋转、平面移动等。

总的来说,三维坐标转换矩阵是三维空间中的重要工具,它可以帮助我们实现对三维图形的各种变换操作。

通过矩阵的乘法运算,我们可以轻松地实现对三维模型的变换,从而实现各种炫丽的效果。

三维坐标转换矩阵的应用范围非常广泛,涉及到计算机图形学、虚拟现实、游戏开发等多个领域,是现代计算机图形学中不可或缺的一部分。

三维坐标系变换

三维坐标系变换

三维坐标系变换三维坐标系变换可以理解为将一个三维点从一个坐标系转换到另一个坐标系中。

在实际应用中,我们常常需要对物体或者场景进行三维建模和渲染,而三维坐标系变换是不可或缺的一个基础环节。

本文将介绍三维坐标系变换的相关概念和常见应用,以及一些实用的解决方案。

一、常见的三维坐标系变换方式在三维坐标系变换中,常见的方式包括平移、旋转、缩放和仿射变换。

它们分别对应了三维空间中的平移、旋转、比例变化和直线间的关系变化。

在实际应用中,我们可以通过矩阵乘法的方式进行数学计算,也可以利用计算机图形学库中封装好的函数来实现。

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 方向放缩的比例因子。

三维坐标变换

三维坐标变换

第二章三维观察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)。

三维坐标变换

三维坐标变换

z
2E F 2A B x
2024/9/5
z
3
H
1
G
Dy
C
1
x
图7-6 比例变换
1 y
13
(2)整体比例变换
1 0 0 0
TS
0 0
1 0
0 1
0 0
0
0
0
s
2024/9/5
14
3. 旋转变换
z
y
X
图7-7 旋转变换的角度方向
2024/9/5
15
(1)绕z轴旋转
cos sin 0 0
TRZ
sin
53
将α值代入(7-1)式得到正二测图的投影变换矩阵:
2
T
2 0
2 sin
2
cos
0 0
0 0
2
2 0
2 sin
2 0
0 0
0 1
特点分析:
2024/9/5
54
7.3.2 斜投影
斜投影图,即斜轴测图,是将三维形体向一个单 一的投影面作平行投影,但投影方向不垂直于投 影面所得到的平面图形。 常用的斜轴测图有斜等测图和斜二测图。
Y
侧视图
Y
46
3. 俯视图 三维形体向xoy面(又称H面)作垂直投影得到俯视图, (1) 投影变换 (2)使H面绕x轴负转90° (3)使H面沿z方向平移一段距离-z0
Z
z
2024/9/5
主视图
O
y
X
俯视图
7-13 三维形体及其三视图
Y
侧视图
Y
47
x
4. 侧视图 获得侧视图是将三维形体往yoz面(侧面W)作垂直投影。 (1) 侧视图的投影变换 (2)使W面绕z轴正转90° (3)使W面沿负x方向平移一段距离x0

笛卡尔三维坐标系

笛卡尔三维坐标系

笛卡尔三维坐标系笛卡尔三维坐标系是一种在三维空间中定义空间中物体位置和位置关系的坐标系。

这种坐标系被广泛应用于计算机图形学、机械设计、导航和定位系统、物理学等领域。

本文将以一种简单易懂的方式概述笛卡尔三维坐标系的概念、变换形式和应用领域,让读者对笛卡尔三维坐标系有更深入的了解。

一、笛卡尔三维坐标系的概念笛卡尔三维坐标系是由17世纪法国数学家和哲学家笛卡尔提出的一种在三维空间中定义物体位置的坐标系,也称为直角坐标系、参考系或者极坐标系。

它由三条有向坐标轴组成,分别为X轴、Y轴和Z轴,分别表示横向、纵向和立体的方向,从原点成比例延伸,将三维空间中物体的位置绘制出来。

二、笛卡尔三维坐标系的变换形式笛卡尔三维坐标系的变换形式分为极坐标、直角坐标和球坐标。

1、极坐标极坐标是指以原点为极点,用极轴和极径表示物体位置的坐标形式。

它由极线和极轴构成,极轴的长度为1,极线的弧线指向物体的位置。

2、直角坐标直角坐标是指不经过任何变换,用X、Y、Z三个坐标轴上的坐标表示物体位置的坐标系。

3、球坐标球坐标是指用经纬度和大地线表示物体位置的坐标系。

三、笛卡尔三维坐标系的应用领域笛卡尔三维坐标系的应用非常广泛,可以说,几乎所有的计算机图形学、机械设计、导航和定位系统、物理学等领域都用到了它。

(1)计算机图形学由于笛卡尔三维坐标系可以表示任意物体的位置及位置关系,因此在计算机图形学中得到广泛应用,可以用来定义一个3D场景,让一个物体移动到另一个位置,以及将一个物体围绕另一个物体旋转等等。

(2)机械设计机械设计也是笛卡尔三维坐标系的重要应用领域,可以用来定义机械零件的实际位置及其变换形式,以及研制出最佳的机械结构设计。

(3)导航和定位系统笛卡尔三维坐标系可以用来定义一个空间中物体的位置和位置变换,因此在导航和定位系统中得到了广泛应用,用来对一个地理范围内的人或物体进行定位,实现自动导航等功能。

(4)物理学由于笛卡尔三维坐标系有着易于理解的物理意义,在物理学中得到了非常广泛的应用,用于表示复杂的动力学系统,如椭圆的轨迹、曲线的运动等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章三维观察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---=Pv z v y v x u z y x 0000---=⋅-Pn 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分别与最近和最远的剪切平面相对应。

相关文档
最新文档