出版時(shí)間:2012-9 出版社:電子工業(yè)出版社 作者:王清輝,李靜蓉 編著 頁(yè)數(shù):421 字?jǐn)?shù):691000
Tag標(biāo)簽:無
前言
筆者長(zhǎng)期從事計(jì)算機(jī)輔助設(shè)計(jì)(CAD)系統(tǒng)的研究與開發(fā)工作,將自己從事CAD系統(tǒng)設(shè)計(jì)與開發(fā)的經(jīng)驗(yàn)提煉和總結(jié)并匯集成書,一直是筆者的一個(gè)心愿。2003年,編著了《Visual C++ CAD應(yīng)用程序開發(fā)技術(shù)》一書。該書出版后,讀者發(fā)來電郵100余封,給予了積極評(píng)價(jià),并交流了在各自專業(yè)領(lǐng)域從事CAD開發(fā)的一些技術(shù)問題。同時(shí),該書所附帶光盤中的程序也在國(guó)內(nèi)軟件開發(fā)的主要論壇被廣泛轉(zhuǎn)載,成為國(guó)內(nèi)OpenGL及CAD開發(fā)的主要參考資料之一,并被國(guó)內(nèi)科技論文作為參考文獻(xiàn)廣泛引用?! ‰S著近年來CAD技術(shù)的發(fā)展,以及近年來與讀者的交流與體驗(yàn),筆者感覺有必要在原書的基礎(chǔ)上,對(duì)該書的內(nèi)容進(jìn)行重要的擴(kuò)充與修改,并增加更多新的內(nèi)容。恰逢電子工業(yè)出版社來我校組織約稿,遂將上述想法付諸實(shí)施?! AD軟件開發(fā)是工程軟件開發(fā)中的一個(gè)重要領(lǐng)域。開發(fā)一個(gè)三維CAD軟件所涉及的知識(shí)面很多,如何規(guī)劃和展開軟件的開發(fā)工作是系統(tǒng)開發(fā)成功與否的關(guān)鍵問題之一。目前,單純講解OpenGL技術(shù)、Visual C++使用,以及面向?qū)ο蟮木幊碳夹g(shù)的出版物較多,本書的特點(diǎn)在于,從系統(tǒng)開發(fā)的角度,將開發(fā)一個(gè)基于OpenGL顯示的三維CAD軟件所涉及的各技術(shù)環(huán)節(jié)逐步展現(xiàn)給讀者,將計(jì)算機(jī)圖形學(xué)、OpenGL、面向?qū)ο蟮能浖_發(fā)技術(shù)三個(gè)方面的知識(shí)予以融會(huì)貫通,將許多技術(shù)難點(diǎn)、抽象的概念融入具體的開發(fā)實(shí)例中講解,著重講解系統(tǒng)開發(fā)過程中的實(shí)際問題,易于讀者領(lǐng)會(huì),具有新穎性和強(qiáng)的實(shí)用性。在講解中,以一個(gè)三維CAD原形系統(tǒng)STLViewer的開發(fā)為主線,貫穿全書,并提供詳細(xì)的代碼注解?! isual C++是Microsoft公司迄今開發(fā)的功能最為強(qiáng)大的軟件開發(fā)工具,是新一代CAD軟件的主要開發(fā)平臺(tái)。隨著面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)廣泛應(yīng)用、Visual C++優(yōu)秀的開發(fā)環(huán)境、Microsoft Foundation Class(MFC)以及MFC程序框架、Windows操作系統(tǒng)對(duì)OpenGL的支持等,為在Windows系統(tǒng)上開發(fā)三維CAD軟件提供了極大的方便。讀者通過本書的學(xué)習(xí),將能夠循序漸進(jìn)地了解和掌握使用Visual C++開發(fā)三維圖形及CAD應(yīng)用軟件的相關(guān)技術(shù)。通過對(duì)應(yīng)用實(shí)例的具體剖析,希望能使讀者從軟件開發(fā)的思想方法上對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)有更深入的了解?! ”緯鴥?nèi)容共分10章,分別介紹基于MFC的總體程序框架的分析與設(shè)計(jì);功能模塊的劃分以及相關(guān)DLL庫(kù)的開發(fā)與使用;CAD的基礎(chǔ)幾何類庫(kù)的開發(fā);在MFC環(huán)境下使用OpenGL進(jìn)行圖形繪制;開發(fā)面向CAD應(yīng)用程序的OpenGL通用繪圖類;使用面向?qū)ο蠹夹g(shù)設(shè)計(jì)CAD軟件的幾何內(nèi)核;曲面的數(shù)學(xué)描述及OpenGL繪制;CAD軟件的圖形交互;及軟件界面設(shè)計(jì)等?! ”緯綆У墓獗P中,根據(jù)每章講述的內(nèi)容提供了全部的實(shí)現(xiàn)代碼。本書的代碼適用于Visual C++ 2005以上版本?! ”緯膬?nèi)容是作者長(zhǎng)期從事CAD系統(tǒng)設(shè)計(jì)和開發(fā)的一些經(jīng)驗(yàn)的提煉和總結(jié)。在內(nèi)容或方法上若有疏漏和不妥之處,懇請(qǐng)各位讀者給予指正?! ⒓颖緯帉懝ぷ鞯倪€有華南理工大學(xué)的熊巍、閻漢生、黃仲輝、張小明等,在此向他們表示感謝?! ∽髡?/pre>內(nèi)容概要
本書系統(tǒng)地闡述了在MFC與OpenGL
API的集成開發(fā)環(huán)境下,用面向?qū)ο蟮募夹g(shù)開發(fā)三維CAD軟件的有關(guān)知識(shí)與方法,包括:總體程序框架的分析與設(shè)計(jì)、功能模塊的劃分,以及相關(guān)DLL庫(kù)的開發(fā)與使用、CAD基礎(chǔ)幾何類庫(kù)的開發(fā)、在MFC環(huán)境下使用OpenGL進(jìn)行圖形繪制、開發(fā)面向CAD應(yīng)用程序的OpenGL通用繪圖類、使用面向?qū)ο蠹夹g(shù)設(shè)計(jì)CAD軟件的幾何內(nèi)核、CAD軟件的圖形交互、軟件界面設(shè)計(jì)等。在介紹過程中,以一個(gè)完整的三維CAD軟件(STLViewer)為例,將其開發(fā)過程貫穿于全書各章節(jié),并附有完整的Visual
C++實(shí)現(xiàn)代碼。全書面向開發(fā)實(shí)例進(jìn)行分析與介紹,講解透徹、易于理解。讀者通過對(duì)本書的閱讀和學(xué)習(xí),能夠掌握使用Visual
C++進(jìn)行具有一定復(fù)雜程度的軟件的設(shè)計(jì)與實(shí)現(xiàn)方法。本書適合從事圖形和CAD軟件開發(fā)的技術(shù)人員,以及具有一定Visual
C++基礎(chǔ)的大專院校相關(guān)專業(yè)學(xué)生閱讀。書籍目錄
第1章 三維CAD軟件的系統(tǒng)框架分析
1.1 關(guān)于微軟基礎(chǔ)類MFC
1.2 MFC應(yīng)用程序的文檔/視圖結(jié)構(gòu)
1.2.1 文檔/視圖結(jié)構(gòu)概述
1.2.2 文檔與多個(gè)視圖的關(guān)聯(lián)
1.2.3 文檔模板及主要組成類
1.3 實(shí)例分析:三維CAD模型瀏覽軟件STLViewer
1.4 STLViewer的程序框架
1.5 STLViewer中類的層次設(shè)計(jì)及軟件模塊結(jié)構(gòu)劃分
1.6 建立和使用動(dòng)態(tài)鏈接庫(kù)
1.6.1 動(dòng)態(tài)鏈接庫(kù)的基本概念
1.6.2 基于MFC的動(dòng)態(tài)鏈接庫(kù)
1.6.3 查看執(zhí)行程序EXE與DLL庫(kù)的層次關(guān)系
附:本章相關(guān)程序使用說明
第2章 矢量計(jì)算工具與幾何計(jì)算類庫(kù)設(shè)計(jì)
2.1 矢量運(yùn)算概述
2.1.1 點(diǎn)
2.1.2 矢量
2.1.3 齊次坐標(biāo)與齊次變換矩陣
2.2 設(shè)計(jì)點(diǎn)、矢量和齊次變換矩陣類
2.2.1 點(diǎn)類CPoint3D
2.2.2 矢量類CVector3D
2.2.3 變換矩陣類CMatrix3D
2.3 三維圖形的幾何變換
2.3.1 三維齊次變換矩陣
2.3.2 平移變換
2.3.3 旋轉(zhuǎn)變換/繞空間任意軸的旋轉(zhuǎn)變換函數(shù)的實(shí)現(xiàn)
2.3.4 幾何縮放
2.3.5 對(duì)稱變換/沿空間任意平面的對(duì)稱變換函數(shù)的實(shí)現(xiàn)
2.4 矢量計(jì)算及其工具函數(shù)集設(shè)計(jì)
2.4.1 判斷兩個(gè)空間矢量是否平行
2.4.2 計(jì)算兩個(gè)矢量的夾角
2.4.3 計(jì)算三角面片的面積
2.4.4 正交投影及點(diǎn)到直線之間的距離計(jì)算
2.4.5 直線求交
2.4.6 創(chuàng)建過平面三個(gè)點(diǎn)的圓
2.5 設(shè)計(jì)幾何基本工具庫(kù)GeomCalc.dll
2.5.1 GeomCalc.dll中的輸出類與輸出函數(shù)
2.5.2 創(chuàng)建幾何基本工具庫(kù)GeomCalc.dll的步驟
2.5.3 使用GeomCalc.dll
2.6 有關(guān)源程序代碼
2.6.1 文件CadBase.h
2.6.2 文件CadBase.cpp
2.6.3 文件CadBase1.cpp
附:本章相關(guān)程序及使用說明
第3章 創(chuàng)建基于MFC的OpenGL Windows程序
3.1 OpenGL概述
3.2 在Windows環(huán)境下使用OpenGL
3.2.1 OpenGL的函數(shù)庫(kù)
3.2.2 獲取與安裝OpenGL
3.2.3 OpenGL與GDI
3.2.4 渲染場(chǎng)境
3.2.5 像素格式
3.3 OpenGL MFC應(yīng)用程序創(chuàng)建實(shí)例
3.3.1 創(chuàng)建一個(gè)應(yīng)用程序框架
3.3.2 修改視類CGLView
3.3.3 使用OpenGL的雙緩存技術(shù)為應(yīng)用程序增加動(dòng)畫效果
3.4 程序清單
3.4.1 文件GLView.h
3.4.2 文件GLView.cpp
附:本章相關(guān)程序使用說明
第4章 設(shè)計(jì)封裝OpenGL功能的C++類
4.1 封裝OpenGL的C++類的設(shè)計(jì)
4.2 照相機(jī)類GCamera的設(shè)計(jì)
4.2.1 視點(diǎn)坐標(biāo)系和視圖變換
4.2.2 投影變換與視景體
4.2.3 視口變換
4.2.4 設(shè)計(jì)照相機(jī)類GCamera
4.3 類COpenGLDC
4.4 修改類CGLView
4.5 運(yùn)行應(yīng)用程序
4.6 源程序清單
4.6.1 類GCamera的聲明代碼
4.6.2 類GCamera的實(shí)現(xiàn)代碼
4.6.3 類COpenGLDC的聲明代碼
4.6.4 類COpenGLDC的實(shí)現(xiàn)代碼
4.6.5 類CGLView的聲明代碼
4.6.6 類CGLView的實(shí)現(xiàn)代碼
附:本章相關(guān)程序使用說明
第5章 設(shè)計(jì)基于OpenGL的CAD圖形工具庫(kù)
5.1 創(chuàng)建動(dòng)態(tài)鏈接庫(kù)glContext.dll
5.2 照相機(jī)類GCamera的功能增強(qiáng)
5.2.1 選擇典型的觀察視圖
5.2.2 景物平移
5.2.3 景物縮放
5.2.4 使用OpenGL的選擇模式
5.3 模型真實(shí)感渲染與OpenGL光照設(shè)置
5.3.1 光照的組成
5.3.2 定義OpenGL的光源
5.3.3 物體材質(zhì)
5.3.4 單面光照與雙面光照
5.4 類COpenGLDC功能的增強(qiáng)
5.4.1 實(shí)現(xiàn)和Windows窗口的關(guān)聯(lián)
5.4.2 有關(guān)光源的操作
5.4.3 有關(guān)顏色的操作
5.4.4 圖形繪制函數(shù)
5.4.5 選擇模式
5.5 增加類CGLView中的功能
5.6 glContext類的輸出和調(diào)用
5.7 源程序清單
5.7.1 文件Camera.h(類GCamera)
5.7.2 文件Camera.cpp(類GCamera)
5.7.3 文件OpenGLDC.h(類COpenGLDC、CGLView)
5.7.4 文件OpenGLDC.cpp(類OpenGLDC)
5.7.5 文件 GLView.cpp(類CGLView)
附:本章相關(guān)程序使用說明
第6章 設(shè)計(jì)幾何內(nèi)核模塊
6.1 CAD實(shí)體模型的常用表示方法
6.1.1 邊界表示法與體素構(gòu)造法簡(jiǎn)介
6.1.2 多邊形網(wǎng)格實(shí)體建模的概念
6.1.3 立體光造型(STL)文件格式
6.2 幾何對(duì)象類的設(shè)計(jì)
6.2.1 類的層次設(shè)計(jì)
6.2.2 幾何對(duì)象基本類CEntity
6.2.3 三角形面片對(duì)象類CTriChip
6.2.4 STL幾何模型類CSTLModel
6.2.5 高級(jí)幾何模型類CPart
6.3 串行化(Serialize)實(shí)現(xiàn)文檔存取功能
6.3.1 為什么要使用串行化
6.3.2 CArchive類
6.3.3 串行化類的設(shè)計(jì)步驟
6.3.4 CObArray的Serialize()函數(shù)
6.3.5 應(yīng)用程序的文檔串行化實(shí)例剖析
6.4 利用多態(tài)性實(shí)現(xiàn)CAD模型的繪制
6.4.1 虛擬函數(shù)與多態(tài)性
6.4.2 利用多態(tài)性統(tǒng)一CAD元素的繪制接口
6.4.3 純虛擬函數(shù)
6.4.4 實(shí)現(xiàn)CPart模型的OpenGL顯示
6.5 建立幾何內(nèi)核庫(kù)GeomKernel.dll
6.6 程序清單
6.6.1 文件Entity.h
6.6.2 文件Entity.cpp
附:本章相關(guān)程序使用說明
第7章 CAD應(yīng)用程序的模塊化實(shí)現(xiàn)
7.1 網(wǎng)格模型可視化程序STLViewer的解決方案
7.1.1 網(wǎng)格模型可視化程序STLViewer的模塊結(jié)構(gòu)
7.1.2 創(chuàng)建應(yīng)用程序的解決方案
7.1.3 為解決方案配置目錄與路徑
7.2 設(shè)計(jì)應(yīng)用程序框架
7.2.1 增加界面資源
7.2.2 修改框架類CMainFrame
7.2.3 修改文檔類CSTLViewerDoc
7.2.4 修改視圖類CSTLViewerView
7.3 運(yùn)行STLViewer.exe
7.3.1 輸入STL模型
7.3.2 存儲(chǔ)STLViewer自己的文檔(*.mdl)
7.3.3 模型顯示縮放
7.3.4 使用鍵盤平移場(chǎng)景
7.3.5 模型視圖切換
7.3.6 模型著色模式切換
7.4 源程序清單
7.4.1 文件MainFrm.h
7.4.2 文件MainFrm.cpp
7.4.3 文件STLViewerDoc.h
7.4.4 文件STLViewerDoc.cpp
7.4.5 文件STLViewerView.h
7.4.6 文件STLViewerView.cpp
附:本章相關(guān)程序使用說明
第8章 曲線和曲面的OpenGL繪制及類設(shè)計(jì)
8.1 關(guān)于曲面造型技術(shù)
8.2曲線和曲面的參數(shù)表示
8.2.1 曲線的非參數(shù)表示
8.2.2 曲線的參數(shù)表示
8.2.3 插值與逼近
8.3 曲線的樣條描述
8.3.1 參數(shù)樣條曲線的基本概念
8.3.2 Bezier曲線、曲面的數(shù)學(xué)表示
8.3.3 使用OpenGL繪制Bezier曲線
8.3.4 使用OpenGL繪制Bezier曲面
8.3.5 NURBS曲線的數(shù)學(xué)表示
8.3.6 使用OpenGL繪制NURBS曲線
8.3.7 使用OpenGL繪制NURBS曲面
8.4 在應(yīng)用程序中集成曲線和曲面功能
8.4.1 添加Bezier曲線功能
8.4.2 添加Bezier曲面功能
……
第9章 CAD應(yīng)用程序的界面設(shè)計(jì)
第10章 三給CAD圖形交互功能的實(shí)現(xiàn)
參考文獻(xiàn)章節(jié)摘錄
版權(quán)頁(yè): 插圖: GCamera的功能類似于與一個(gè)照相機(jī),可稱之為照相機(jī)類。GCamera中定義了視口大小、投影變換和一個(gè)視點(diǎn)的位置和觀察方向。這如同使用一架相機(jī)取景,使用者需要確定相機(jī)的位置和角度、取景范圍,最后才將景物投影于膠片上的過程。這些操作實(shí)際上定義了OpenGL中一系列的變換。在三維空間中,由于變換是圖形制作和顯示環(huán)節(jié)中最關(guān)鍵的問題之一,物體擺放的位置、方向以及動(dòng)畫的實(shí)現(xiàn)都依靠變換來實(shí)現(xiàn)。通過變換,OpenGL將三維對(duì)象投影到二維屏幕上。同時(shí),OpenGL中的變換還使得用戶可以對(duì)圖形進(jìn)行平移、旋轉(zhuǎn)和縮放。這些變換分別通過對(duì)視點(diǎn)變換、模型變換、投影變換和視口變換等操作來最終實(shí)現(xiàn)。GCamera就是這樣一個(gè)定義和操作變換的類。具體到CAD應(yīng)用中,視圖的放大、縮小、旋轉(zhuǎn)、平移以及在三維空間中的導(dǎo)航(Navigaition)的實(shí)現(xiàn),都?xì)w結(jié)于對(duì)變換的操作。 COpenGLDC作為一個(gè)封裝0penGL功能的C++類,封裝了在MFC下OpenGL的環(huán)境設(shè)置,即一個(gè)渲染場(chǎng)境(Rendering Context),以及圖形繪制的相關(guān)函數(shù)。它的內(nèi)容包括:OpenGL和Windows窗口的關(guān)聯(lián)、光照和顏色、取景操作、場(chǎng)景繪制等幾方面。當(dāng)然,可以根據(jù)不同的應(yīng)用需要在類COpenGLDC中增加新的內(nèi)容,這一點(diǎn)在本書第5章中還將具體論述。COpenGLDC中包含了一個(gè)GCamera的對(duì)象,用于取景操作。對(duì)OpenGL的操作可在類COpenGLDC中實(shí)現(xiàn)。因而在MFC的窗口類插入一個(gè)COpenGLDC的對(duì)象,并使它與窗口關(guān)聯(lián),就可以使用COpenGLDC進(jìn)行對(duì)OpenGL的操作和圖形繪制。 和上一章中創(chuàng)建的CGLView不同的是,這里的CGLView把與OpenGL相關(guān)的代碼分離了出來,在類中包括了一個(gè)COpenGLDC的對(duì)象,與OpenGL相關(guān)的操作通過對(duì)COpenGLDC的調(diào)用予以實(shí)現(xiàn)。作為一個(gè)視類,CGLView本身的代碼將集中于處理和分發(fā)用戶和視圖窗口的交互信息,如對(duì)視圖的放大、縮小、視角的變換、旋轉(zhuǎn)、平移以及鼠標(biāo)的拖動(dòng)和物體的撿取等操作。 這樣劃分的優(yōu)點(diǎn)在于代碼更具有獨(dú)立性,能夠提高代碼的重復(fù)利用率,也便于對(duì)類進(jìn)行維護(hù)和功能擴(kuò)充。下面將具體介紹這幾個(gè)類的設(shè)計(jì)與實(shí)現(xiàn),通過這幾個(gè)類的設(shè)計(jì),也可以對(duì)OpenGL的一些相關(guān)概念有一個(gè)深入的了解。編輯推薦
《CAD應(yīng)用程序開發(fā)詳解:Visual C++與OpenGL綜合應(yīng)用》適合從事圖形和CAD軟件開發(fā)的技術(shù)人員,以及具有一定Visual C++基礎(chǔ)的大專院校相關(guān)專業(yè)學(xué)生閱讀。圖書封面
圖書標(biāo)簽Tags
無評(píng)論、評(píng)分、閱讀與下載
- 還沒讀過(99)
- 勉強(qiáng)可看(719)
- 一般般(122)
- 內(nèi)容豐富(5086)
- 強(qiáng)力推薦(417)