坐標(biāo)系與右手定則_第1頁(yè)
坐標(biāo)系與右手定則_第2頁(yè)
坐標(biāo)系與右手定則_第3頁(yè)
坐標(biāo)系與右手定則_第4頁(yè)
坐標(biāo)系與右手定則_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.坐標(biāo)系與右手定則(OpenInventor使用的坐標(biāo)系統(tǒng))坐標(biāo)系與右手定則(OpenInventor使用的坐標(biāo)系統(tǒng))(轉(zhuǎn))在三維坐標(biāo)系中,Z軸的正軸方向是根據(jù)右手定則確定的。右手定則也決定三維空間中任一坐標(biāo)軸的正旋轉(zhuǎn)方向。 要標(biāo)注X、Y和Z軸的正軸方向,就將右手背對(duì)著屏幕放置,拇指即指向X軸的正方向。伸出食指和中指,如右圖所示,食指指向Y軸的正方向,中指所指示的方向即是Z軸的正方向。 要確定軸的正旋轉(zhuǎn)方向,如右圖所示,用右手的大拇指指向軸的正方向,彎曲手指。那么手指所指示的方向即是軸的正旋轉(zhuǎn)方向。Open Inventor 對(duì) 3D 數(shù)據(jù)使用的是右手坐標(biāo)系,從屏幕內(nèi)指向外,表示 z 軸的正方

2、向。所有的角度單位都是弧度。對(duì)象都是在自己的局部坐標(biāo)系空間下進(jìn)行描述的,既眾所周知的對(duì)象坐標(biāo)系空間(object coordinate space)。當(dāng)場(chǎng)景中的所有物體都已經(jīng)進(jìn)行完坐標(biāo)變換后,那么它們就都在世界坐標(biāo)系空間下描述了(world coordinate space)。照相機(jī)和燈光節(jié)點(diǎn)處于世界坐標(biāo)系空間下。三維坐標(biāo)系 三維坐標(biāo)系三維笛卡兒坐標(biāo)系是在二維笛卡兒坐標(biāo)系的基礎(chǔ)上根據(jù)右手定則增加第三維坐標(biāo)(即Z軸)而形成的。同二維坐標(biāo)系一樣,AutoCAD中的三維坐標(biāo)系有世界坐標(biāo)系WCS(World Coordinate System)和用戶坐標(biāo)系UCS(User Coordinate Sys

3、tem)兩種形式。目錄1. 1.三維笛卡爾坐標(biāo)系 2. 2.圓柱坐標(biāo)系 3. 3.球面坐標(biāo)系展開1.右手定則 1.右手定則 在三維坐標(biāo)系中,Z軸的正軸方向是根據(jù)右手定則確定的。右手定則也決定三維空間中任一坐標(biāo)軸的正旋轉(zhuǎn)方向。 要標(biāo)注X、Y和Z軸的正軸方向,就將右手背對(duì)著屏幕放置,拇指即指向X軸的正方向。伸出食指和中指,如右圖所示,食指指向Y軸的正方向,中指所指示的方向即是Z軸的正方向。 要確定軸的正旋轉(zhuǎn)方向,如右圖所示,用右手的大拇指指向軸的正方向,彎曲手指。那么手指所指示的方向即是軸的正旋轉(zhuǎn)方向。 2.世界坐標(biāo)系2.世界坐標(biāo)系(WCS) 在AutoCAD中,三維世界坐標(biāo)系是在二維世界坐標(biāo)系的

4、基礎(chǔ)上根據(jù)右手定則增加Z軸而形成的。同二維世界坐標(biāo)系一樣,三維世界坐標(biāo)系是其他三維坐標(biāo)系的基礎(chǔ),不能對(duì)其重新定義。 3.用戶坐標(biāo)系3.用戶坐標(biāo)系(UCS) 用戶坐標(biāo)系為坐標(biāo)輸入、操作平面和觀察提供一種可變動(dòng)的坐標(biāo)系。定義一個(gè)用戶坐標(biāo)系即改變?cè)c(diǎn)(0,0,0)的位置以及XY平面和Z軸的方向。可在AutoCAD的三維空間中任何位置定位和定向UCS,也可隨時(shí)定義、保存和復(fù)用多個(gè)用戶坐標(biāo)系。詳見本章第3節(jié)。 三維坐標(biāo)形式在AutoCAD中提供了下列三種三維坐標(biāo)形式: 1.三維笛卡爾坐標(biāo) 三維笛卡爾坐標(biāo)(X,Y,Z)與二維笛卡爾坐標(biāo)(X,Y)相似,即在X和Y值基礎(chǔ)上增加Z值。同樣還可以使用基于當(dāng)前坐標(biāo)系

5、原點(diǎn)的絕對(duì)坐標(biāo)值或基于上個(gè)輸入點(diǎn)的相對(duì)坐標(biāo)值。 2.圓柱坐標(biāo) 圓柱坐標(biāo)與二維極坐標(biāo)類似,但增加了從所要確定的點(diǎn)到XY平面的距離值。即三維點(diǎn)的圓柱坐標(biāo)可通過(guò)該點(diǎn)與UCS原點(diǎn)連線在XY平面上的投影長(zhǎng)度,該投影與X軸夾角、以及該點(diǎn)垂直于XY平面的Z值來(lái)確定。例如,坐標(biāo)“1060,20”表示某點(diǎn)與原點(diǎn)的連線在XY平面上的投影長(zhǎng)度為10個(gè)單位,其投影與X軸的夾角為60度,在Z軸上的投影點(diǎn)的Z值為20。 圓柱坐標(biāo)也有相對(duì)的坐標(biāo)形式,如相對(duì)圓柱坐標(biāo)“ 1045 ,30”表示某點(diǎn)與上個(gè)輸入點(diǎn)連線在XY平面上的投影長(zhǎng)為10個(gè)單位,該投影與X軸正方向的夾角為45度且Z軸的距離為30個(gè)單位。 3.球面坐標(biāo) 球面坐標(biāo)

6、也類似與二維極坐標(biāo)。在確定某點(diǎn)時(shí),應(yīng)分別指定該點(diǎn)與當(dāng)前坐標(biāo)系原點(diǎn)的距離,二者連線在XY平面上的投影與X軸的角度,以及二者連線與XY平面的角度。例如,坐標(biāo)“104560”表示一個(gè)點(diǎn),它與當(dāng)前UCS原點(diǎn)的距離為10個(gè)單位,在XY平面的投影與X軸的夾角為45度,該點(diǎn)與XY平面的夾角為60度。 同樣,圓柱坐標(biāo)的相對(duì)形式表明了某點(diǎn)與上個(gè)輸入點(diǎn)的距離,二者連線在XY平面上的投影與X軸的角度,以及二者連線與XY平面的角度。 數(shù)學(xué)中常用的三種三維坐標(biāo)系1.三維笛卡爾坐標(biāo)系三維笛卡爾坐標(biāo)(X,Y,Z)是在三維笛卡爾坐標(biāo)系下的點(diǎn)的表達(dá)式,其中,y,z分別是擁有共同的零點(diǎn)且彼此相互正交的x軸,y軸,z軸的坐標(biāo)值。

7、2.圓柱坐標(biāo)系圓柱坐標(biāo)(,z)是圓柱坐標(biāo)系上的點(diǎn)的表達(dá)式。設(shè)P(x,y,z)為空間內(nèi)一點(diǎn),則點(diǎn)P也可用這樣三個(gè)有次序的數(shù),z來(lái)確定,其中為點(diǎn)P在xoy平面的投影M與原點(diǎn)的距離,為有向線段PO在xoy平面的投影MO與x軸正向所夾的角。圓柱坐標(biāo)系和三維笛卡爾坐標(biāo)系的點(diǎn)的坐標(biāo)的對(duì)應(yīng)關(guān)系是,x=cos,y=sin,z=z。 3.球面坐標(biāo)系球面坐標(biāo)系由到原點(diǎn)的距離、方位角、仰角三個(gè)維度構(gòu)成。 球面坐標(biāo)(,)是球面坐標(biāo)系上的點(diǎn)的表達(dá)式。設(shè)P(x,y,z)為空間內(nèi)一點(diǎn),則點(diǎn)P也可用這樣三個(gè)有次序的數(shù)r,來(lái)確定,其中r為原點(diǎn)O與點(diǎn)P間的距離,為有向線段與z軸正向所夾的角,為從正z軸來(lái)看自x軸按逆時(shí)針?lè)较蜣D(zhuǎn)到有

8、向線段的角,這里M為點(diǎn)P在xOy面上的投影。這樣的三個(gè)數(shù)r,叫做點(diǎn)P的球面坐標(biāo),這里r,的變化范圍為 r0,+), 0, 2, 0, . r = 常數(shù),即以原點(diǎn)為心的球面; = 常數(shù),即以原點(diǎn)為頂點(diǎn)、z軸為軸的圓錐面; = 常數(shù),即過(guò)z軸的半平面。 其中 x=rsincos y=rsinsin z=rcos笛卡爾坐標(biāo)系是直角坐標(biāo)系和斜角坐標(biāo)系的統(tǒng)稱。 相交于原點(diǎn)的兩條數(shù)軸,構(gòu)成了平面仿射坐標(biāo)系。如兩條數(shù)軸上的度量單位相等,則稱此仿射坐標(biāo)系為笛卡爾坐標(biāo)系。兩條數(shù)軸互相垂直的笛卡爾坐標(biāo)系,稱為笛卡爾直角坐標(biāo)系,否則稱為笛卡爾斜角坐標(biāo)系。 仿射坐標(biāo)系和笛卡爾坐標(biāo)系平面向空間的推廣 相交于原點(diǎn)的三條不

9、共面的數(shù)軸構(gòu)成空間的仿射坐標(biāo)系。三條數(shù)軸上度量單位相等的仿射坐標(biāo)系被稱為空間笛卡爾坐標(biāo)系。三條數(shù)軸互相垂直的笛卡爾坐標(biāo)系被稱為空間笛卡爾直角坐標(biāo)系,否則被稱為空間笛卡爾斜角坐標(biāo)系。 笛卡爾坐標(biāo),它表示了點(diǎn)在空間中的位置,和直角坐標(biāo)有區(qū)別,兩種坐標(biāo)可以相互轉(zhuǎn)換。舉個(gè)例子:某個(gè)點(diǎn)的笛卡爾坐標(biāo)是493 ,454, 967,那它的X軸坐標(biāo)就是4+9+3=16,Y軸坐標(biāo)是4+5+4=13,Z軸坐標(biāo)是9+6+7=22,因此這個(gè)點(diǎn)的直角坐標(biāo)是(16, 13, 22),坐標(biāo)值不可能為負(fù)數(shù)(因?yàn)槿齻€(gè)自然數(shù)相加無(wú)法成為負(fù)數(shù))。 這個(gè)應(yīng)該是了 右手定則 在三維坐標(biāo)系中,Z軸的正軸方向是根據(jù)右手定則確定的。右手定則也

10、決定三維空間中任一坐標(biāo)軸的正旋轉(zhuǎn)方向。 要標(biāo)注X、Y和Z軸的正軸方向,就將右手背對(duì)著屏幕放置,拇指即指向X軸的正方向。伸出食指和中指,食指指向Y軸的正方向,中指所指示的方向即是Z軸的正方向三維坐標(biāo)系與幾何學(xué)Microsoft Direct3D應(yīng)用程序需要熟悉三維幾何學(xué)原理。本節(jié)介紹創(chuàng)建三維場(chǎng)景所需的最重要的幾何概念。本節(jié)涉及到以下主題。這些主題給讀者提供了一個(gè)對(duì)Direct3D應(yīng)用程序所涉及到的基本概念的高層描述。更多有關(guān)這些主題的信息,請(qǐng)參閱更多的信息。三維坐標(biāo)系通常三維圖形應(yīng)用程序使用兩種笛卡爾坐標(biāo)系:左手系和右手系。在這兩種坐標(biāo)系中,正x軸指向右面,正y軸指向上面。通過(guò)沿正x軸方向到正y

11、軸方向握拳,大姆指的指向就是相應(yīng)坐標(biāo)系統(tǒng)的正z軸的指向。下圖顯示了這兩種坐標(biāo)系統(tǒng)。Microsoft Direct3D使用左手坐標(biāo)系。如果正在移植基于右手坐標(biāo)系的應(yīng)用程序,必須將傳給Direct3D的數(shù)據(jù)做兩點(diǎn)改變。 顛倒三角形頂點(diǎn)的順序,這樣系統(tǒng)會(huì)從正面以順時(shí)針的方向遍歷它們。換句話說(shuō),如果頂點(diǎn)是v0,v1,v2,那么以v0,v2,v1的順序傳給Direct3D。 用觀察矩陣對(duì)世界空間中的z值取反。要做到這一點(diǎn),將表示觀察矩陣的D3DMATRIX結(jié)構(gòu)的_31、_32、_33和_34成員的符號(hào)取反。 要得到等同于右手系的效果,可以使用D3DXMatrixPerspectiveRH和D3DXMa

12、trixOrthoRH函數(shù)定義投影矩陣。但是,要小心使用D3DXMatrixLookAtRH函數(shù),并相應(yīng)地顛倒背面剔除的順序及放置立方體貼圖。雖然左手坐標(biāo)系和右手坐標(biāo)系是最為常用的系統(tǒng),但在三維軟件中還使用許多其它坐標(biāo)系。例如,對(duì)三維建模應(yīng)用程序而言,使用y軸指向或背向觀察者的坐標(biāo)系統(tǒng)并非罕見。在這種情況下,任意軸(x,y或z)的正半軸指向觀察者的被定義為右手系。任意軸(x,y或z)的正半軸背向觀察者的被定義為左手系。如果正在移植一個(gè)基于左手系進(jìn)行建模的應(yīng)用程序,z軸向上,那么除了前面的步驟外,還必須旋轉(zhuǎn)所有的頂點(diǎn)數(shù)據(jù)(譯注:如果原來(lái)的坐標(biāo)系為正x軸向里,正y軸向左,正z軸向上,那么傳給Dir

13、ect3D的頂點(diǎn)的x值對(duì)應(yīng)原來(lái)的y值,y值對(duì)應(yīng)原來(lái)的z值,z值對(duì)應(yīng)原來(lái)的x值,亦即旋轉(zhuǎn)頂點(diǎn)數(shù)據(jù))。對(duì)三維坐標(biāo)系統(tǒng)中定義的三維物體執(zhí)行的最基本操作是變換、旋轉(zhuǎn)和縮放。可以合并這些基本變換以創(chuàng)建一個(gè)新的變換矩陣。細(xì)節(jié)請(qǐng)參閱三維變換。即使合并相同的變換操作,不同的合并順序得到的結(jié)果是不可交換的矩陣相乘的順序很重要。三維圖元三維圖元是組成單個(gè)三維實(shí)體的頂點(diǎn)集合。三維坐標(biāo)系統(tǒng)中最簡(jiǎn)單的圖元是點(diǎn)的集合,稱為點(diǎn)表。通常三維圖元是多邊形。一個(gè)多邊形是由至少三個(gè)頂點(diǎn)描繪的三維形體。最簡(jiǎn)單的多邊形是三角形。Microsoft Direct3D使用三角形組成大多數(shù)多邊形,因?yàn)槿切蔚娜齻€(gè)頂點(diǎn)一定是共面的。應(yīng)用程序可

14、以用三角形組合成大而復(fù)雜的多邊形及網(wǎng)格(mesh)。下圖顯示了一個(gè)立方體。立方體的每個(gè)面由兩個(gè)三角形組成。整個(gè)三角形的集合構(gòu)成了一個(gè)立方體圖元??梢詫⒓y理和材質(zhì)應(yīng)用于圖元的表面使它們看起來(lái)像是實(shí)心的??梢允褂萌切蝿?chuàng)建具有光滑曲面的圖元。下圖顯示了如何用三角形模擬一個(gè)球體。應(yīng)用了材質(zhì)后,渲染得到的球體看起來(lái)是彎曲的。如果使用高洛德著色,結(jié)果更是如此。更多信息請(qǐng)參閱高洛德著色。表面和頂點(diǎn)法向量網(wǎng)格中的每個(gè)面有一個(gè)垂直的法向量。該向量的方向由定義頂點(diǎn)的順序及坐標(biāo)系統(tǒng)是左手系還是右手系決定。表面法向量從表面上指向正向面那一側(cè),如果把表面水平放置,正向面朝上,背向面朝下,那么表面法向量為垂直于表面從下

15、方指向上方。在Microsoft Direct3D中,只有面的正向是可視的。一個(gè)正向面是頂點(diǎn)按照順時(shí)針順序定義的面。任何不是正向面的面都是背向面。由于Direct3D不總是渲染背向面,因此背向面要被剔除。如果想要渲染背向面的話,可以改變剔除模式。更多信息請(qǐng)參閱剔除狀態(tài)。Direct3D在計(jì)算高洛德著色、光照和紋理效果時(shí)使用頂點(diǎn)法向。Direct3D使用頂點(diǎn)法向計(jì)算光源和表面間的夾角,對(duì)多邊形進(jìn)行高洛德著色。Direct3D計(jì)算每個(gè)頂點(diǎn)的顏色和亮度值,并對(duì)圖元表面所覆蓋的所有像素點(diǎn)進(jìn)行插值。Direct3D使用夾角計(jì)算光強(qiáng)度,夾角越大,表面得到的光照就越少。如果正在創(chuàng)建的物體是平直的,可將頂點(diǎn)法

16、向設(shè)為與表面垂直,如下圖所示。該圖定義了一個(gè)由兩個(gè)三角形組成的平直表面。但是,更可能的情況是物體由三角形帶(triangle strips)組成且三角形不共面。要對(duì)整個(gè)三角形帶的三角形平滑著色的一個(gè)簡(jiǎn)單方法是首先計(jì)算與頂點(diǎn)相關(guān)聯(lián)的每個(gè)多邊形表面的表面法向量??梢赃@樣計(jì)算頂點(diǎn)法向,使頂點(diǎn)法向與頂點(diǎn)所屬的每個(gè)表面的法向的夾角相等。但是,對(duì)復(fù)雜圖元來(lái)說(shuō)這種方法可能不夠有效。這種方法如下圖所示。圖中有兩個(gè)表面,S1與S2,它們的鄰邊在上方。S1與S2的法向量用藍(lán)色顯示。頂點(diǎn)的法向量用紅色顯示。頂點(diǎn)法向量與S1表面法向的夾角和頂點(diǎn)法向量與S2表面法向的夾角相同。當(dāng)對(duì)這兩個(gè)表面進(jìn)行光照計(jì)算和高洛德著色時(shí),

17、得到結(jié)果是中間的邊被平滑著色,看起來(lái)像是弧形的(而不是有棱角的)。如果頂點(diǎn)法向偏向與它相關(guān)聯(lián)的某個(gè)面,那么會(huì)導(dǎo)致那個(gè)面上的點(diǎn)光強(qiáng)度的增加或減少。下圖顯示了一個(gè)例子。這些面的鄰邊依然朝上。頂點(diǎn)法向傾向S1,與頂點(diǎn)法向與表面法向有相同的夾角相比,這使頂點(diǎn)法向與光源間的夾角變小??梢杂酶呗宓轮谌S場(chǎng)景中顯示一些有清晰邊緣的物體。要達(dá)到這個(gè)目的,只要在需要產(chǎn)生清晰邊緣的表面交線處,把表面法向復(fù)制給交線處頂點(diǎn)的法向,如下圖所示。如果使用DrawPrimitive方法渲染場(chǎng)景,要將有鋒利邊緣的物體定義為三角形表,而非三角形帶。當(dāng)將物體定義為三角形帶時(shí),Direct3D會(huì)將它作為由多個(gè)三角形組成的單個(gè)多

18、邊形處理。高洛德著色被同時(shí)應(yīng)用于多邊形每個(gè)表面的內(nèi)部和表面之間。結(jié)果產(chǎn)生表面之間平滑著色的物體。因?yàn)槿切伪碛梢幌盗胁幌噙B的三角形面組成,所以Direct3D對(duì)多邊形每個(gè)面的內(nèi)部使用高洛德著色。但是,沒(méi)有在表面之間應(yīng)用高洛德著色。如果三角形表的兩個(gè)或更多的三角形是相鄰的,那么在它們之間看起來(lái)會(huì)有一條鋒利邊緣。另一種可選的方法是在渲染具有鋒利邊緣的物體時(shí)改變到平面著色模式。這在計(jì)算上是最有效的方法,但它可能導(dǎo)致場(chǎng)景中的物體不如用高洛德著色渲染的物體真實(shí)。三角形光柵化法則頂點(diǎn)指定的點(diǎn)經(jīng)常不能精確地對(duì)應(yīng)到屏幕上的像素。此時(shí),Microsoft Direct3D使用三角形光柵化法則決定對(duì)于給定三角形使

19、用哪個(gè)像素。三角形光柵化法則Direct3D在填充幾何圖形時(shí)使用左上填充約定(top-left filling convention)。這與Microsoft Windows的圖形設(shè)備接口(GUI)和OpenGL中的矩形使用的約定相同。Direct3D中,像素的中心是決定點(diǎn)。如果中心在三角形內(nèi),那么該像素就是三角形的一部分。像素中心用整數(shù)坐標(biāo)表示。這里描述的Direct3D使用的三角形光柵化法則不一定適用于所有可用的硬件。測(cè)試可以發(fā)現(xiàn)這些法則的實(shí)現(xiàn)間的細(xì)微變化。下圖顯示了一個(gè)左上角為(0,0),右下角為(5,5)的矩形。正如大家想象的那樣,此矩形填充25個(gè)像素。矩形的寬度由right減left

20、定義。高度由bottom減top定義。在左上填充約定中,上表示水平span在垂直方向上的位置,左表示span中的像素在水平方向上的位置。一條邊除非是水平的,否則不可能是頂邊一般來(lái)說(shuō),大多數(shù)三角形只有左邊或右邊。左上填充約定確定當(dāng)一個(gè)三角形穿過(guò)像素的中心時(shí)Direct3D采取的動(dòng)作。下圖顯示了兩個(gè)三角形,一個(gè)在(0,0),(5,0)和(5,5),另一個(gè)在(0,5),(0,0)和(5,5)。在這種情況下第一個(gè)三角形得到15個(gè)像素(顯示為黑色),而第二個(gè)得到10個(gè)像素(顯示為灰色),因?yàn)楣眠吺堑谝粋€(gè)三角形的左邊。如果應(yīng)用程序定義一個(gè)左上角為(0.5,0.5),右下角為(2.5,4.5)的矩形,那么

21、這個(gè)矩形的中心在(1.5,2.5)。當(dāng)Direct3D光柵化器tessellate這個(gè)矩形時(shí),每個(gè)像素的中心都毫無(wú)異義地分別位于四個(gè)三角形中,此時(shí)就不需要左上填充約定。下圖顯示了這種情況。矩形內(nèi)的像素根據(jù)在Direct3D中被哪個(gè)三角形包含做了相應(yīng)的標(biāo)注。如果將上例中的矩形移動(dòng),使之左上角為(1.0,1.0),右下角為(3.0,5.0),中心為(2.0,3.0),那么Direct3D使用左上角填充約定。這個(gè)矩形中大多數(shù)的像素跨越兩個(gè)或更多的三角形的邊界,如下圖所示。這兩個(gè)矩形會(huì)影響到相同的像素。點(diǎn)、線光柵化法則點(diǎn)和點(diǎn)精靈一樣,都被渲染為與屏幕邊緣對(duì)齊的四邊形,因此它們使用與多邊形同樣的渲染法則

22、。非抗鋸齒線段的渲染法則與GDI使用的法則完全相同。更多有關(guān)抗鋸齒線段的渲染,請(qǐng)參閱ID3DXLine。點(diǎn)精靈光柵化法則對(duì)點(diǎn)精靈和patch圖元的渲染,就好像先把圖元tessellate成三角形,然后將得到的三角形進(jìn)行光柵化。更多信息,請(qǐng)參閱點(diǎn)精靈。矩形貫穿Microsoft Direct3D和Microsoft Windows編程,都是用術(shù)語(yǔ)包圍矩形來(lái)討論屏幕上的物體。由于包圍矩形的邊總是與屏幕的邊平行,因此矩形可以用兩個(gè)點(diǎn)描述,左上角和右下角。當(dāng)在屏幕上進(jìn)行位塊傳輸(Blit = Bit block transfer)或命中檢測(cè)時(shí),大多數(shù)應(yīng)用程序使用RECT結(jié)構(gòu)保存包圍矩形的信息。C+中,

23、RECT結(jié)構(gòu)有如下定義。typedef struct tagRECT LONG left; / 這是左上角的x坐標(biāo)。 LONG top; / 這是左上角的y坐標(biāo)。 LONG right; / 這是右下角的x坐標(biāo)。 LONG bottom; / 這是右下角的y坐標(biāo)。 RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT; 在上例中,left和top成員是包圍矩形左上角的x-和y-坐標(biāo)。類似地,right和bottom成員組成右下角的坐標(biāo)。下圖直觀地顯示了這些值。為了效率、一致性及易用性, Direct3D所有的presentation函數(shù)都使用矩形。三角形插值對(duì)象(in

24、terpolants)在渲染時(shí),流水線會(huì)貫穿每個(gè)三角形的表面進(jìn)行頂點(diǎn)數(shù)據(jù)插值。有五種可能的數(shù)據(jù)類型可以進(jìn)行插值。頂點(diǎn)數(shù)據(jù)可以是各種類型的數(shù)據(jù),包括(但不限于):漫反射色、鏡面反射色、漫反射阿爾法(三角形透明度)、鏡面反射阿爾法、霧因子(固定功能流水線從鏡面反射的阿爾法分量中取得,可編程頂點(diǎn)流水線則從霧寄存器中取得)。頂點(diǎn)數(shù)據(jù)通過(guò)頂點(diǎn)聲明定義。對(duì)一些頂點(diǎn)數(shù)據(jù)的插值取決于當(dāng)前的著色模式,如下表所示。著色模式描述平面 在平面著色模式下只對(duì)霧因子進(jìn)行插值。對(duì)所有其它的插值對(duì)象,整個(gè)面都使用三角形第一個(gè)頂點(diǎn)的顏色。高洛德 在所有三個(gè)頂點(diǎn)間進(jìn)行線性插值。根據(jù)不同的顏色模型,對(duì)漫反射色和鏡面反射色的處理是不同的。在RGB顏色模型中,系統(tǒng)在插值時(shí)使用紅、綠和藍(lán)顏色分量。顏色的阿爾法成員作為單獨(dú)的插值對(duì)象對(duì)待,因?yàn)樵O(shè)備驅(qū)動(dòng)程序可以以兩種不同的方法實(shí)現(xiàn)透明:使用紋理混合或使用點(diǎn)畫法(stippling)??梢杂肈3DCAPS9結(jié)構(gòu)的ShadeCaps成員確定設(shè)備驅(qū)動(dòng)程序支持何種插值。向量、頂點(diǎn)和四元數(shù)貫穿Microsoft Direct3D,頂點(diǎn)用于描述位置和方向。圖元中的每個(gè)頂點(diǎn)由指定其位置的向量、顏色、紋理坐標(biāo)和指定其方向的法向量描述。四元數(shù)給三元素向量的 x, y, z值增加了第四個(gè)元素。用于三維旋轉(zhuǎn)的方法,除了典型的矩陣以外,四元數(shù)是另

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論