坐标系与右手定则

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

坐标系与右手定则(OpenInventor使用的坐标系统)坐标系与右手定则(OpenInventor使用的坐标系统)(转)在三维坐标系中,Z轴的正轴方向是根据右手定则确定的。右手定则也决定三维空间中任一坐标轴的正旋转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向。伸出食指和中指,如右图所示,食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向。要确定轴的正旋转方向,如右图所示,用右手的大拇指指向轴的正方向,弯曲手指。那么手指所指示的方向即是轴的正旋转方向。OpenInventor对3D数据使用的是右手坐标系,从屏幕内指向外,表示z轴的正方向。所有的角度单位都是弧度。对象都是在自己的局部坐标系空间下进行描述的,既众所周知的对象坐标系空间(objectcoordinatespace)。当场景中的所有物体都已经进行完坐标变换后,那么它们就都在世界坐标系空间下描述了(worldcoordinatespace)。照相机和灯光节点处于世界坐标系空间下。三维坐标系三维坐标系三维笛卡儿坐标系是在二维笛卡儿坐标系的基础上根据右手定则增加第三维坐标(即Z轴)而形成的。同二维坐标系一样,AutoCAD中的三维坐标系有世界坐标系WCS(WorldCoordinateSystem)和用户坐标系UCS(UserCoordinateSystem)两种形式。目录展开1.右手定则1.右手定则在三维坐标系中,Z轴的正轴方向是根据右手定则确定的。右手定则也决定三维空间中任一坐标轴的正旋转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向。伸出食指和中指,如右图所示,食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向。要确定轴的正旋转方向,如右图所示,用右手的大拇指指向轴的正方向,弯曲手指。那么手指所指示的方向即是轴的正旋转方向。2.世界坐标系2.世界坐标系(WCS)在AutoCAD中,三维世界坐标系是在二维世界坐标系的基础上根据右手定则增加Z轴而形成的。同二维世界坐标系一样,三维世界坐标系是其他三维坐标系的基础,不能对其重新定义。3.用户坐标系3.用户坐标系(UCS)用户坐标系为坐标输入、操作平面和观察提供一种可变动的坐标系。定义一个用户坐标系即改变原点(0,0,0)的位置以及XY平面和Z轴的方向。可在AutoCAD的三维空间中任何位置定位和定向UCS,也可随时定义、保存和复用多个用户坐标系。详见本章第3节。三维坐标形式在AutoCAD中提供了下列三种三维坐标形式:1.三维笛卡尔坐标三维笛卡尔坐标(X,Y,Z)与二维笛卡尔坐标(X,Y)相似,即在X和Y值基础上增加Z值。同样还可以使用基于当前坐标系原点的绝对坐标值或基于上个输入点的相对坐标值。2.圆柱坐标圆柱坐标与二维极坐标类似,但增加了从所要确定的点到XY平面的距离值。即三维点的圆柱坐标可通过该点与UCS原点连线在XY平面上的投影长度,该投影与X轴夹角、以及该点垂直于XY平面的Z值来确定。例如,坐标“1060,20”表示某点与原点的连线在XY平面上的投影长度为10个单位,其投影与X轴的夹角为60度,在Z轴上的投影点的Z值为20。圆柱坐标也有相对的坐标形式,如相对圆柱坐标“@1045,30”表示某点与上个输入点连线在XY平面上的投影长为10个单位,该投影与X轴正方向的夹角为45度且Z轴的距离为30个单位。3.球面坐标球面坐标也类似与二维极坐标。在确定某点时,应分别指定该点与当前坐标系原点的距离,二者连线在XY平面上的投影与X轴的角度,以及二者连线与XY平面的角度。例如,坐标“104560”表示一个点,它与当前UCS原点的距离为10个单位,在XY平面的投影与X轴的夹角为45度,该点与XY平面的夹角为60度。同样,圆柱坐标的相对形式表明了某点与上个输入点的距离,二者连线在XY平面上的投影与X轴的角度,以及二者连线与XY平面的角度。数学中常用的三种三维坐标系1.三维笛卡尔坐标系三维笛卡尔坐标(X,Y,Z)是在三维笛卡尔坐标系下的点的表达式,其中,x,y,z分别是拥有共同的零点且彼此相互正交的x轴,y轴,z轴的坐标值。2.圆柱坐标系圆柱坐标(ρ,θ,z)是圆柱坐标系上的点的表达式。设P(x,y,z)为空间内一点,则点P也可用这样三个有次序的数ρ,θ,z来确定,其中ρ为点P在xoy平面的投影M与原点的距离,θ为有向线段PO在xoy平面的投影MO与x轴正向所夹的角。圆柱坐标系和三维笛卡尔坐标系的点的坐标的对应关系是,x=ρcosθ,y=ρsinθ,z=z。3.球面坐标系球面坐标系由到原点的距离、方位角、仰角三个维度构成。球面坐标(ρ,θ,φ)是球面坐标系上的点的表达式。设P(x,y,z)为空间内一点,则点P也可用这样三个有次序的数r,φ,θ来确定,其中r为原点O与点P间的距离,θ为有向线段与z轴正向所夹的角,φ为从正z轴来看自x轴按逆时针方向转到有向线段的角,这里M为点P在xOy面上的投影。这样的三个数r,φ,θ叫做点P的球面坐标,这里r,φ,θ的变化范围为r∈[0,+∞),φ∈[0,2π],θ∈[0,π].r=常数,即以原点为心的球面;θ=常数,即以原点为顶点、z轴为轴的圆锥面;φ=常数,即过z轴的半平面。其中x=rsinθcosφy=rsinθsinφz=rcosθ笛卡尔坐标系是直角坐标系和斜角坐标系的统称。相交于原点的两条数轴,构成了平面仿射坐标系。如两条数轴上的度量单位相等,则称此仿射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。仿射坐标系和笛卡尔坐标系平面向空间的推广相交于原点的三条不共面的数轴构成空间的仿射坐标系。三条数轴上度量单位相等的仿射坐标系被称为空间笛卡尔坐标系。三条数轴互相垂直的笛卡尔坐标系被称为空间笛卡尔直角坐标系,否则被称为空间笛卡尔斜角坐标系。笛卡尔坐标,它表示了点在空间中的位置,和直角坐标有区别,两种坐标可以相互转换。举个例子:某个点的笛卡尔坐标是493,454,967,那它的X轴坐标就是4+9+3=16,Y轴坐标是4+5+4=13,Z轴坐标是9+6+7=22,因此这个点的直角坐标是(16,13,22),坐标值不可能为负数(因为三个自然数相加无法成为负数)。这个应该是了右手定则在三维坐标系中,Z轴的正轴方向是根据右手定则确定的。右手定则也决定三维空间中任一坐标轴的正旋转方向。要标注X、Y和Z轴的正轴方向,就将右手背对着屏幕放置,拇指即指向X轴的正方向。伸出食指和中指,食指指向Y轴的正方向,中指所指示的方向即是Z轴的正方向三维坐标系与几何学Microsoft®Direct3D®应用程序需要熟悉三维几何学原理。本节介绍创建三维场景所需的最重要的几何概念。本节涉及到以下主题。这些主题给读者提供了一个对Direct3D应用程序所涉及到的基本概念的高层描述。更多有关这些主题的信息,请参阅更多的信息。三维坐标系通常三维图形应用程序使用两种笛卡尔坐标系:左手系和右手系。在这两种坐标系中,正x轴指向右面,正y轴指向上面。通过沿正x轴方向到正y轴方向握拳,大姆指的指向就是相应坐标系统的正z轴的指向。下图显示了这两种坐标系统。Microsoft®Direct3D®使用左手坐标系。如果正在移植基于右手坐标系的应用程序,必须将传给Direct3D的数据做两点改变。颠倒三角形顶点的顺序,这样系统会从正面以顺时针的方向遍历它们。换句话说,如果顶点是v0,v1,v2,那么以v0,v2,v1的顺序传给Direct3D。用观察矩阵对世界空间中的z值取反。要做到这一点,将表示观察矩阵的D3DMATRIX结构的_31、_32、_33和_34成员的符号取反。要得到等同于右手系的效果,可以使用D3DXMatrixPerspectiveRH和D3DXMatrixOrthoRH函数定义投影矩阵。但是,要小心使用D3DXMatrixLookAtRH函数,并相应地颠倒背面剔除的顺序及放置立方体贴图。虽然左手坐标系和右手坐标系是最为常用的系统,但在三维软件中还使用许多其它坐标系。例如,对三维建模应用程序而言,使用y轴指向或背向观察者的坐标系统并非罕见。在这种情况下,任意轴(x,y或z)的正半轴指向观察者的被定义为右手系。任意轴(x,y或z)的正半轴背向观察者的被定义为左手系。如果正在移植一个基于左手系进行建模的应用程序,z轴向上,那么除了前面的步骤外,还必须旋转所有的顶点数据(译注:如果原来的坐标系为正x轴向里,正y轴向左,正z轴向上,那么传给Direct3D的顶点的x值对应原来的y值,y值对应原来的z值,z值对应原来的x值,亦即旋转顶点数据)。对三维坐标系统中定义的三维物体执行的最基本操作是变换、旋转和缩放。可以合并这些基本变换以创建一个新的变换矩阵。细节请参阅三维变换。即使合并相同的变换操作,不同的合并顺序得到的结果是不可交换的——矩阵相乘的顺序很重要。三维图元三维图元是组成单个三维实体的顶点集合。三维坐标系统中最简单的图元是点的集合,称为点表。通常三维图元是多边形。一个多边形是由至少三个顶点描绘的三维形体。最简单的多边形是三角形。Microsoft®Direct3D®使用三角形组成大多数多边形,因为三角形的三个顶点一定是共面的。应用程序可以用三角形组合成大而复杂的多边形及网格(mesh)。下图显示了一个立方体。立方体的每个面由两个三角形组成。整个三角形的集合构成了一个立方体图元。可以将纹理和材质应用于图元的表面使它们看起来像是实心的。可以使用三角形创建具有光滑曲面的图元。下图显示了如何用三角形模拟一个球体。应用了材质后,渲染得到的球体看起来是弯曲的。如果使用高洛德着色,结果更是如此。更多信息请参阅高洛德着色。表面和顶点法向量网格中的每个面有一个垂直的法向量。该向量的方向由定义顶点的顺序及坐标系统是左手系还是右手系决定。表面法向量从表面上指向正向面那一侧,如果把表面水平放置,正向面朝上,背向面朝下,那么表面法向量为垂直于表面从下方指向上方。在Microsoft®Direct3D®中,只有面的正向是可视的。一个正向面是顶点按照顺时针顺序定义的面。任何不是正向面的面都是背向面。由于Direct3D不总是渲染背向面,因此背向面要被剔除。如果想要渲染背向面的话,可以改变剔除模式。更多信息请参阅剔除状态。Direct3D在计算高洛德着色、光照和纹理效果时使用顶点法向。Direct3D使用顶点法向计算光源和表面间的夹角,对多边形进行高洛德着色。Direct3D计算每个顶点的颜色和亮度值,并对图元表面所覆盖的所有像素点进行插值。Direct3D使用夹角计算光强度,夹角越大,表面得到的光照就越少。如果正在创建的物体是平直的,可将顶点法向设为与表面垂直,如下图所示。该图定义了一个由两个三角形组成的平直表面。但是,更可能的情况是物体由三角形带(trianglestrips)组成且三角形不共面。要对整个三角形带的三角形平滑着色的一个简单方法是首先计算与顶点相关联的每个多边形表面的表面法向量。可以这样计算顶点法向,使顶点法向与顶点所属的每个表面的法向的夹角相等。但是,对复杂图元来说这种方法可能不够有效。这种方法如下图所示。图中有两个表面,S1与S2,它们的邻边在上方。S1与S2的法向量用蓝色显示。顶点的法向量用红色显示。顶点法向量与S1表面法向的夹角和顶点法向量与S2表面法向的夹角相同。当对这两个表面进行光照计算和高洛德着色时,得到结果是中间的边被平滑着色,看起来像是弧形的(而不是有棱角的)。如果顶点法向偏向与它相关联的某个面,那么会导致那个面上的点光强度的增加或减少。下图显示了一个例子。这些面的邻边依然朝上。顶点法向倾向S1,与顶点法向与表面法向有相同的夹角相比,这使顶点法向与光源间的夹角变小。可以用高洛德着色在三维场景中显示一些有清晰边缘的物体。要达到这个目的,只要在需要产生清晰边缘的表面交线处,把表面法向复制给交线处顶点的法向,如下图所示。如果使用DrawPrimitive方法渲染场景,要将有锋利边缘的物

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功