第三章 圖 形 對 象

第三章 圖 形 對 象

ID:20517887

大?。?.00 MB

頁數(shù):19頁

時間:2018-10-09

第三章   圖  形  對  象_第1頁
第三章   圖  形  對  象_第2頁
第三章   圖  形  對  象_第3頁
第三章   圖  形  對  象_第4頁
第三章   圖  形  對  象_第5頁
資源描述:

《第三章 圖 形 對 象》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、第三章圖形對象即使人們不知道蘋果和梨是怎么種植的,也可以吃掉它們。那么能否不必知道構(gòu)造細(xì)節(jié),也可以繪制出復(fù)雜的圖形呢?可以,圖形對象就干這種事情。Intra3D的圖形對象隱藏了幾何造型與繪制的細(xì)節(jié),用戶使用簡單的幾個接口函數(shù)就可以繪制出圖形。Intra3D2.0版提供了三類圖形對象:(1)常用幾何對象,如長方體、錐體、圓柱體、球體、圓環(huán)體、Swept形體等對象;(2)多邊形模型對象,用于繪制Autodesk公司.3ds模型和Wavefront公司的.obj模型;(3)商業(yè)統(tǒng)計(jì)圖形對象,如柱形圖、帶狀圖、條形圖、折線圖、面積圖、餅圖、塔形圖、曲線圖、曲面圖

2、、進(jìn)程圖、股票圖等對象。Intra3D將“圖形對象”和“形體節(jié)點(diǎn)”(見第四章)分層設(shè)計(jì)。圖形對象負(fù)責(zé)繪制,形體節(jié)點(diǎn)則處理3D交互。形體節(jié)點(diǎn)可以動態(tài)地引用圖形對象,從而實(shí)現(xiàn)交互式繪制。這種分層設(shè)計(jì)可使Intra3D核心庫具有良好的可擴(kuò)展性,并使交互式3D應(yīng)用程序的開發(fā)更加靈活。3.1圖形對象的基類與COM接口圖形對象的基類為GraphicalObject,相應(yīng)的COM接口為IGraphicalObject。在C++類庫中,幾何圖形對象如BoxObject、ConeObject、CylinderObject、SphereObject與TorusObject,

3、多邊形模型對象如Model3DS與ModelOBJ,商業(yè)統(tǒng)計(jì)圖形對象如ColumnChart3D、RibbonChart3D、LineChart2D與BartChar2D等,均為GraphicalObject的派生類。在COM庫中,上述對象均繼承接口IGraphicalObject。C++類庫中GraphicalObject是Container的派生類,應(yīng)使用AddRef與Release函數(shù)來管理內(nèi)存。源程序見Intra3D-DLLIncludeLayer2GraphicalObject.h。其定義如下:classGraphicalObject:p

4、ublicContainer{public:virtualvoidDraw(void){}//圖形繪制函數(shù)//獲取對象的包圍盒,(dx,dy,dz)為長方體的幅值,(cx,cy,cz)為中心坐標(biāo),virtualvoidGetBoundBox(float*dx,float*dy,float*dz,float*cx,float*cy,float*cz){*dx=*dy=*dz=0;*cx=*cy=*cz=0;}//獲取對象的包圍球,(cx,cy,cz)為中心坐標(biāo),radius為半徑virtualvoidGetBoundSphere(float*radius,

5、float*cx,float*cy,float*cz){*cx=*cy=*cz=0;*radius=0;}//獲取對象的最小坐標(biāo)值(minx,miny,minz)與最大坐標(biāo)值(maxx,maxy,maxz)virtualvoidGetMinMax(float*minx,float*miny,float*minz,float*maxx,float*maxy,float*maxz){*minx=*miny=*minz=-0;*maxx=*maxy=*maxz=0;}64};其中公有函數(shù)Draw、GetBoundBox、GetBoundSphere與GetMi

6、nMax均為虛函數(shù),具體行為由派生類定義。COM接口IGraphicalObject的定義如下(見Intra3D-COMIntra3D.idl文件):interfaceIGraphicalObject:IDispatch{HRESULTDraw();HRESULTGetMinMax([out]float*minX,[out]float*minY,[out]float*minZ,[out]float*maxX,[out]float*maxY,[out]float*maxZ);HRESULTGetBoundSphere([out]float*radius,

7、[out]float*cx,[out]float*cy,[out]float*cz);HRESULTGetBoundBox([out]float*dx,[out]float*dy,[out]float*dz,[out]float*cx,[out]float*cy,[out]float*cz);};3.2常用幾何圖形對象Intra3D2.0C++類庫與COM庫中的常用幾何圖形對象有BoxObject、ConeObject、CylinderObject、SphereObject與TorusObject。由于這幾種圖形對象的設(shè)計(jì)非常相似,本節(jié)僅以SphereO

8、bject為例講述程序設(shè)計(jì)。程序的重點(diǎn)是AddRef、Release與Final

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。