坐标系与右手定则

上传人:桂梅 文档编号:185785088 上传时间:2023-02-06 格式:DOCX 页数:18 大小:359.06KB
收藏 版权申诉 举报 下载
坐标系与右手定则_第1页
第1页 / 共18页
坐标系与右手定则_第2页
第2页 / 共18页
坐标系与右手定则_第3页
第3页 / 共18页
资源描述:

《坐标系与右手定则》由会员分享,可在线阅读,更多相关《坐标系与右手定则(18页珍藏版)》请在装配图网上搜索。

1、坐标系与右手定则(Openinventor使用的坐标系统)坐标系与右手定则(Openinventor使用的坐标系统)(转)在三维坐标系中,Z轴的正轴方向是根据右手定则确定的.右手定则也决定三维空间中任一坐标轴的正旋转 方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向伸出食指和中指, 如右图所示,食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向。要确定轴的正旋转方向,如右图所示,用右手的大拇指指向轴的正方向,弯曲手指。那么手指所指示的方向 即是轴的正旋转方向.Open Inventor对3D数据使用的是右手坐标系,从屏幕内指向外,表示z轴的正方 向。所有的

2、角度单位都是弧度。对象都是在自己的局部坐标系空间下进行描述的,既众所周知的对象坐标 系空间”(object coordinate space)。当场景中的所有物体都已经进行完坐标变换后,那么它们就都在世界坐标系空间”下描述了(world coordinate space)。照相机和灯光节点处于世界坐标系空间下。三维坐标系三维坐标系三维笛卡儿坐标系是在二维笛卡儿坐标系的基础上根据右手定则增加第三维坐标(即Z轴)而 形成的。同二维坐标系一样,AutoCAD中的三维坐标系有世界坐标系WCS(World Coordinate System)和用户坐标系 UCS (User Coordinate Sys

3、tem)两种形式。目录展开1. 右手定则1. 右手定则在三维坐标系中,Z轴的正轴方向是根据右手定则确定的。右手定 则也决定三维空间中任一坐标轴的正旋转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即 指向X轴的正方向。伸出食指和中指,如右图所示,食指指向Y轴的正方向,中指所指示的方向即是 Z轴的正方向。要确定轴的正旋转方向,如右图所示,用右手的大拇指指向轴的正方向,弯曲手指。那么手指 所指示的方向即是轴的正旋转方向。|tl1f 7 业飞 I 弔 VILFH FLU I 3尸 IJEMBaJBkJaSilUU K LUdU H-4- di 4U BelH2. 世界坐标系2。世界

4、坐标系(WCS)在AutoCAD中,三维世界坐标系是在二维世界坐标系的基础上根据右手定则增加Z轴而形成的。同二维世界坐标系一样,三维世界坐标系是其他三维坐标系的基础,不能对其重新定义.3。用户坐标系3。用户坐标系(UCS)用户坐标系为坐标输入、操作平面和观察提供一种可变动的坐标系。定义一个用户坐标系即改 变原点(0,0,0)的位置以及XY平面和Z轴的方向。可在AutoCAD的三维空间中任何位置定位 和定向UCS,也可随时定义、保存和复用多个用户坐标系。详见本章第3节。三维坐标形式在AutoCAD中提供了下列三种三维坐标形式:1. 三维笛卡尔坐标三维笛卡尔坐标(X,Y , Z)与二维笛卡尔坐标(

5、X, Y)相似,即在X和Y值基础上增加Z值. 同样还可以使用基于当前坐标系原点的绝对坐标值或基于上个输入点的相对坐标值。2。圆柱坐标圆柱坐标与二维极坐标类似,但增加了从所要确定的点到 XY平面的距离值。即三维点的圆柱 坐标可通过该点与UCS原点连线在XY平面上的投影长度,该投影与 X轴夹角、以及该点垂直于 XY平面的Z值来确定.例如,坐标“1060,20”表示某点与原点的连线在 XY平面上的投影长度为 10个单位,其投影与X轴的夹角为60度,在Z轴上的投影点的Z值为20.知球坐标圆柱坐标也有相对的坐标形式,如相对圆柱坐标 “ 1045 ,30”表示某点与上个输入点连线在45XY平面上的投影长为

6、10个单位,该投影与X轴正方向的夹角为度且Z轴的距离为30个单位。3。球面坐标球面坐标也类似与二维极坐标.在确定某点时,应分别指定该点与当前坐标系原点的距离,二者 连线在XY平面上的投影与X轴的角度,以及二者连线与 XY平面的角度。例如,坐标“104560” 表示一个点,它与当前UCS原点的距离为10个单位,在XY平面的投影与X轴的夹角为45度,该点 与XY平面的夹角为60度。同样,圆柱坐标的相对形式表明了某点与上个输入点的距离,二者连线在XY平面上的投影与X 轴的角度,以及二者连线与XY平面的角度。数学中常用的三种三维坐标系1。三维笛卡尔坐标系三维笛卡尔坐标(X,Y , Z)是在三维笛卡尔坐

7、标系下的点的表达式,其中,x ,y, z分别是拥有 共同的零点且彼此相互正交的x轴,y轴,z轴的坐标值。2. 圆柱坐标系圆柱坐标(p, 0, z)是圆柱坐标系上的点的表达式。设P (x, y, z)为空间内一点,则点P也可用这样三个有次序的数p, 0, z来确定,其中p为点P在xoy平面的投影M与原点的距离,0为有向 线段PO在xoy平面的投影MO与x轴正向所夹的角。圆柱坐标系和三维笛卡尔坐标系的点的坐标 的对应关系是,x=pcos0,y=psin0 , z=z。3。球面坐标系球面坐标系由到原点的距离、方位角、仰角三个维度构成。球面坐标(p, 0,申)是球面坐标系上的点的表达式设P (x, y

8、, z)为空间内一点,则点P也可用这样三个有次序的数r,p,0来确定, 其中r为原点O与点P间的距离,0为有向线段与z轴正向所夹的角,申为从正z轴来看自x轴按 逆时针方向转到有向线段的角,这里M为点P在xOy面上的投影。这样的三个数r,申,0叫做点P 的球面坐标,这里r,申,0的变化范围为 胆0,+切,申丘0, 2n, 0丘0 , n . r =常数,即以原点 为心的球面;0=常数,即以原点为顶点、z轴为轴的圆锥面;p=常数,即过z轴的半平面.其中 x=rsin0cosp y=rsin0sinp z=rcos0笛卡尔坐标系是直角坐标系和斜角坐标系的统称。相交于原点的两条数轴 构成了平面仿射坐标

9、系。如两条数轴上的度量单位相等 则称此仿射坐标系为笛 卡尔坐标系.两条数轴互相垂直的笛卡尔坐标系 称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。 仿射坐标系和笛卡尔坐标系平面向空间的推广 相交于原点的三条不共面的数轴构成空间的仿射坐标系.三条数轴上度量单位相等的仿射坐标系被称为空间 笛卡尔坐标系。三条数轴互相垂直的笛卡尔坐标系被称为空间笛卡尔直角坐标系 否则被称为空间笛卡尔 斜角坐标系。笛卡尔坐标 它表示了点在空间中的位置 和直角坐标有区别,两种坐标可以相互转换。举个例子:某个点 的笛卡尔坐标是493 ,454, 967 ,那它的X轴坐标就是4+9+3=16 , Y轴坐标是4+5+4=13,

10、Z轴坐标是9+6+7=22 , 因此这个点的直角坐标是(16 13, 22) 坐标值不可能为负数(因为三个自然数相加无法成为负数).这个应该是了右手定则在三维坐标系中 Z 轴的正轴方向是根据右手定则确定的。右手定则也决定三维空间中任一坐标轴的正旋 转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向。伸出食指和中指, 食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向查看大图站在机床前面,右孚 中指从-壬轴进给方向捋出 otatiesky net确定三维坐标系与几何学Microsof t Direc t3D应用程序需要熟悉三维几何学原理.本节介绍创建三维场景

11、所需的最重要的几何 概念本节涉及到以下主题。这些主题给读者提供了一个对Direct3D应用程序所涉及到的基本概念的高层描述。更多有关这些主题的信 息,请参阅更多的信息。三维坐标系通常三维图形应用程序使用两种笛卡尔坐标系:左手系和右手系。在这两种坐标系中,正X轴指向右面, 正y轴指向上面。通过沿正X轴方向到正y轴方向握拳,大姆指的指向就是相应坐标系统的正z轴的指向. 下图显示了这两种坐标系统。Left-handedCartesian CoordinatesRight-handedCartesian CoordinatesMicrosof t Direc t3D使用左手坐标系。如果正在移植基于右手

12、坐标系的应用程序,必须将传给Direc t3D 的数据做两点改变。颠倒三角形顶点的顺序,这样系统会从正面以顺时针的方向遍历它们。换句话说,如果顶点是vO, vl, v2,那么以v0, v2,vl的顺序传给Direct3D。 用观察矩阵对世界空间中的z值取反。要做到这一点,将表示观察矩阵的D3DMATRIX结构的_31、 _32、_33和34成员的符号取反。要得到等同于右手系的效果,可以使用D3DXMatrixPerspectiveRH和D3DXMatrixOrthoRH函数定义投影矩 阵。但是,要小心使用D3DXMatrixLookAtRH函数,并相应地颠倒背面剔除的顺序及放置立方体贴图。虽然

13、左手坐标系和右手坐标系是最为常用的系统,但在三维软件中还使用许多其它坐标系。例如,对三维 建模应用程序而言,使用y轴指向或背向观察者的坐标系统并非罕见。在这种情况下,任意轴(x, y或z) 的正半轴指向观察者的被定义为右手系任意轴(x,y或z)的正半轴背向观察者的被定义为左手系。如果正 在移植一个基于左手系进行建模的应用程序,z轴向上,那么除了前面的步骤外,还必须旋转所有的顶点数 据(译注:如果原来的坐标系为正x轴向里,正y轴向左,正z轴向上,那么传给Direct3D的顶点的x值 对应原来的y值,y值对应原来的z值,z值对应原来的x值,亦即旋转顶点数据)。对三维坐标系统中定义的三维物体执行的最

14、基本操作是变换、旋转和缩放。可以合并这些基本变换以创建 一个新的变换矩阵。细节请参阅三维变换。即使合并相同的变换操作,不同的合并顺序得到的结果是不可交换的矩阵相乘的顺序很重要。三维图元三维图元是组成单个三维实体的顶点集合。三维坐标系统中最简单的图元是点的集合,称为点表。通常三维图元是多边形。一个多边形是由至少三个顶点描绘的三维形体。最简单的多边形是三角形。 Microsof t Direc t3D使用三角形组成大多数多边形,因为三角形的三个顶点一定是共面的。应用程序可 以用三角形组合成大而复杂的多边形及网格(mesh).下图显示了一个立方体立方体的每个面由两个三角形组成。整个三角形的集合构成了

15、一个立方体图元可 以将纹理和材质应用于图兀的表面使它们看起来像是实心的。可以使用三角形创建具有光滑曲面的图元下图显示了如何用三角形模拟一个球体应用了材质后,渲染得 到的球体看起来是弯曲的。如果使用高洛德着色,结果更是如此。更多信息请参阅高洛德着色。表面和顶点法向量网格中的每个面有一个垂直的法向量。该向量的方向由定义顶点的顺序及坐标系统是左手系还是右手系决 定表面法向量从表面上指向正向面那一侧,如果把表面水平放置,正向面朝上,背向面朝下,那么表面法 向量为垂直于表面从下方指向上方.在Microsoft Direct3D中,只有面的正向是可视的。一个正向面是顶 点按照顺时针顺序定义的面。Verte

16、x 2x 3任何不是正向面的面都是背向面。由于Direct3D不总是渲染背向面,因此背向面要被剔除。如果想要渲染 背向面的话,可以改变剔除模式更多信息请参阅剔除状态。Direct3D在计算高洛德着色、光照和纹理效果时使用顶点法向.Direct3D使用顶点法向计算光源和表面间的夹角,对多边形进行高洛德着色。Direct3D计算每个顶点的颜 色和亮度值,并对图元表面所覆盖的所有像素点进行插值.Direc t3D使用夹角计算光强度,夹角越大,表面 得到的光照就越少。如果正在创建的物体是平直的,可将顶点法向设为与表面垂直,如下图所示。该图定义了一个由两个三角 形组成的平直表面。但是,更可能的情况是物体

17、由三角形带(t riangle st rips)组成且三角形不共面。要对整个三角形带的三 角形平滑着色的一个简单方法是首先计算与顶点相关联的每个多边形表面的表面法向量。可以这样计算顶 点法向,使顶点法向与顶点所属的每个表面的法向的夹角相等但是,对复杂图元来说这种方法可能不够有 效。这种方法如下图所示图中有两个表面,S1与S2,它们的邻边在上方.S1与S2的法向量用蓝色显示。顶点 的法向量用红色显示顶点法向量与S1表面法向的夹角和顶点法向量与S2表面法向的夹角相同。当对这两 个表面进行光照计算和高洛德着色时,得到结果是中间的边被平滑着色,看起来像是弧形的(而不是有棱 角的).如果顶点法向偏向与它

18、相关联的某个面,那么会导致那个面上的点光强度的增加或减少下图显示了一个例 子这些面的邻边依然朝上。顶点法向倾向S1,与顶点法向与表面法向有相同的夹角相比,这使顶点法向与 光源间的夹角变小。Li gill somce可以用高洛德着色在三维场景中显示一些有清晰边缘的物体。要达到这个目的,只要在需要产生清晰边缘 的表面交线处,把表面法向复制给交线处顶点的法向,如下图所示。如果使用DrawPrimitive方法渲染场景,要将有锋利边缘的物体定义为三角形表,而非三角形带。当将物 体定义为三角形带时,Direct3D会将它作为由多个三角形组成的单个多边形处理。高洛德着色被同时应用 于多边形每个表面的内部和

19、表面之间。结果产生表面之间平滑着色的物体.因为三角形表由一系列不相连的 三角形面组成,所以Direct3D对多边形每个面的内部使用高洛德着色。但是,没有在表面之间应用高洛德 着色.如果三角形表的两个或更多的三角形是相邻的,那么在它们之间看起来会有一条锋利边缘。另一种可选的方法是在渲染具有锋利边缘的物体时改变到平面着色模式。这在计算上是最有效的方法,但 它可能导致场景中的物体不如用高洛德着色渲染的物体真实。三角形光栅化法则顶点指定的点经常不能精确地对应到屏幕上的像素。此时,Microsoft Direct3D使用三角形光栅化法则 决定对于给定三角形使用哪个像素。三角形光栅化法则Direct3D在

20、填充几何图形时使用左上填充约定(top-left filling convention)。这与Microsoft Windows 的图形设备接口(GUI)和OpenGL中的矩形使用的约定相同。Direct3D中,像素的中心是决定点如果中心 在三角形内,那么该像素就是三角形的一部分。像素中心用整数坐标表示这里描述的Direct3D使用的三角形光栅化法则不一定适用于所有可用的硬件.测试可以发现这些法则的实 现间的细微变化。下图显示了一个左上角为(0, 0),右下角为(5, 5)的矩形。正如大家想象的那样,此矩形填充25个像素。 矩形的宽度由right减left定义.高度由bottom减top定义.

21、在左上填充约定中,上表示水平span在垂直方向上的位置,左表示span中的像素在水平方向上的位置。 一条边除非是水平的,否则不可能是顶边一般来说,大多数三角形只有左边或右边。012345Top edRight edge左上填充约定确定当一个三角形穿过像素的中心时Direct3D采取的动作。下图显示了两个三角形,一个在 (0,0), (5, 0)和(5, 5),另一个在(0,5), (0,0)和(5,5)。在这种情况下第一个三角形得到15个像 素(显示为黑色),而第二个得到10个像素(显示为灰色),因为公用边是第一个三角形的左边。012345如果应用程序定义一个左上角为(0。5, 0。5),右下

22、角为(2.5, 4。5)的矩形,那么这个矩形的中心在(1.5, 2。5).当Direct3D光栅化器tessellate这个矩形时,每个像素的中心都毫无异义地分别位于四个三角形 中,此时就不需要左上填充约定。下图显示了这种情况。矩形内的像素根据在Direct3D中被哪个三角形包 含做了相应的标注。如果将上例中的矩形移动,使之左上角为(1.0,1。0),右下角为(3。0,5.0),中心为(2.0, 3。0),那 么Direct3D使用左上角填充约定。这个矩形中大多数的像素跨越两个或更多的三角形的边界,如下图所示。I X_ _ 7 1 f I131 1、T /l.1iirii i i11L1-1才

23、11111-1 B 1111X1-11 J匚_- 1Right triangle gets this pkel because it is a left pixel for that triangle.这两个矩形会影响到相同的像素。(0.5, 0.5)-(2.5, 4.5)(1.0, 1.0)-(3.0, 5.0)01232I/;II f11 / 1r 111111111*11111111?/1X 111 i1 / 上-. 1JJ点、线光栅化法则点和点精灵一样,都被渲染为与屏幕边缘对齐的四边形,因此它们使用与多边形同样的渲染法 则.非抗锯齿线段的渲染法则与GDI使用的法则完全相同.更多有关抗锯

24、齿线段的渲染,请参阅ID3DXLine。点精灵光栅化法则 对点精灵和pat ch图元的渲染,就好像先把图元tessella te成三角形,然后将得到的三角形进 行光栅化。更多信息,请参阅点精灵。矩形贯穿Microsoft Direct3D和Microsoft Windows编程,都是用术语包围矩形来讨论屏幕上的物体。由于 包围矩形的边总是与屏幕的边平行,因此矩形可以用两个点描述左上角和右下角。当在屏幕上进行位块传 输(Blit = Bit block transfer)或命中检测时,大多数应用程序使用RECT结构保存包围矩形的信息。C+中,RECT结构有如下定义.typedef struct

25、tagRECT LONG left ;/这是左上角的x坐标.LONG top; /这是左上角的y坐标。LONGright;/这是右下角的x坐标.LONGbottom; /这是右下角的y坐标。 RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;在上例中,left和top成员是包围矩形左上角的x-和y坐标.类似地,right和bottom成员组成右下角的 坐标。下图直观地显示了这些值。Display Screen(left, top) Bounding Rectangle :CRECT):(right, bottom)IJ为了效率、一致性及易用性,Direct3D所有

26、的presentation函数都使用矩形。三角形插值对象(int erpolan ts)在渲染时,流水线会贯穿每个三角形的表面进行顶点数据插值。有五种可能的数据类型可以进行插值。顶 点数据可以是各种类型的数据,包括(但不限于):漫反射色、镜面反射色、漫反射阿尔法(三角形透明度)、 镜面反射阿尔法、雾因子(固定功能流水线从镜面反射的阿尔法分量中取得可编程顶点流水线则从雾寄存 器中取得)。顶点数据通过顶点声明定义。对一些顶点数据的插值取决于当前的着色模式如下表所示。着色模式描述平面在平面着色模式下只对雾因子进行插值。对所有其它的插值对象,整个面都使 用三角形第一个顶点的颜色。高洛德在所有三个顶点间

27、进行线性插值。根据不同的颜色模型,对漫反射色和镜面反射色的处理是不同的。在RGB颜色模型中,系统在插值时使用 红、绿和蓝颜色分量。颜色的阿尔法成员作为单独的插值对象对待,因为设备驱动程序可以以两种不同的方法实现透明:使用纹 理混合或使用点画法(st ippling)。可以用D3DCAPS9结构的ShadeCaps成员确定设备驱动程序支持何种插值。向量、顶点和四元数贯穿MicrosoftDirect3D,顶点用于描述位置和方向图元中的每个顶点由指定其位置的向量、颜色、纹 理坐标和指定其方向的法向量描述。四元数给三元素向量的x, y, z值增加了第四个元素。用于三维旋转的方法,除了典型的矩阵以外,

28、四 元数是另一种选择。四元数表示三维空间中的一根轴及围绕该轴的一个旋转。例如,一个四元数可能表示 轴(1,1,2)和1度的旋转.四元数包含了有价值的信息,但它们真正的威力源自可对它们执行的两种操作: 合成和插值。对四元数进行插值与合成它们类似。两个四元数的合成如下表示:Qqq12将两个四元数的合成应用于几何体意味着“把几何体绕axis2轴旋转ro tat ion?角度,然后绕axis1轴旋转 rotatio角度”在这种情况下,Q表示绕单根轴的旋转,该旋转是先后将q2和口应用于几何体的结果。使用四元数,应用程序可以计算出一条从一根轴和一个方向到另一根轴和另一个方向的平滑、合理的路径 因此,在和q

29、2间插值提供了一个从一个方向变化到另一个方向的简单方法。当同时使用合成与插值时,四元数提供了一个看似复杂而实际简单的操作几何体的方法。例如,设想我们希 望把一个几何体旋转到某个给定方向我们已经知道希望将它绕axis轴旋转r度,然后绕axis轴旋转r 度,但是我们不知道最终的四元数。通过使用合成,我们可以在几何体上合成两个旋转并得到最终单个的四 元数.然后,我们可以在原始四元数和合成的四元数间进行插值,得到两者之间的平滑转换。Direct3D扩展(D3DX)工具库包含了帮助用户使用四元数的函数.例如,D3DXQuaternionRotationAxis函 数给一个定义旋转轴的向量增加一个旋转值,并在由D3DXQUTERNION结构定义的四元数中返回结果。另外, D3DXQuaternionMultiply函数合成四元数,D3DXQuaternionSlerp函数在两个四元数间进行球面线性插值 (spherical linear interpolation).Direct3D应用程序可以使用下列函数简化对四元数的使用。Direct3D应用程序可以使用下列函数简化对三成员向量的使用。D3DX工具库提供的数学函数中包含了许多辅助函数,可以简化对二成员和四成员向量的使用。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!