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