《C語言成像與光線追蹤程式設計》是1995年科學出版社/龍門書局出版的圖書,作者是C.D.沃特金森(美)等。
基本介紹
- 書名:C語言成像與光線追蹤程式設計
- 作者:C.D.沃特金森(美)等
- 譯者:劉穎
- ISBN:9787030048479
- 頁數:367
- 定價:46.00
- 出版社:科學出版社/龍門書局
- 出版時間:1995年8月
- 裝幀:平裝
內容介紹,目錄,
內容介紹
計算機圖形在越來越多的領域得到了廣泛的套用,而大多數個人計算機用戶卻因缺乏基本的編程工具而不能在便宜的PC機上生成精美的計算機圖形,本書旨在幫助這些用戶挖掘PC機潛在的圖形設計能力,製做逼真的高質量計算機圖形。本書介紹了計算機圖形學要求的向量和矩陣算術工具,討論了光線追蹤程式的生成和使用,並給出了實際的C代碼。此外,本書還對三維建模工具、提高圖像質量的方法及圖形顯示設備等做了介紹。
隨附的磁碟提供了大量程式實例,稍加改動即可用於實際的圖形製作。
目錄
目 錄
前言
緒論
0.1本書的組織
0.2第一部分
0.2.1數學模組
0.2.2圖形界面模組
0.2.3使用這些模組
0.3第二部分
0.3.1光線追蹤理論
0.3.2光線追蹤程式
0.3.3光線-物體相交測試
0.3.4陰影、紋理和光照
0.3.5複習光線追蹤程式代碼
0.3.6怎樣使用光線追蹤程式
0.4第三部分
0.5第四部分
0.6第五部分
0.7第六部分
0.8第七部分
0.9軟體和硬體要求
0.10總結
第一部分 標準和通用模組
第一章 標準和C語言
1.1為什麼選用C語言
1.2程式語言的概念
1.3變數和數據類型
1.4運算符
1.5程式控制
1.6函式
1.7宏
1.8指針和數組
1.9記憶體
1.10結構
1.11 typedef
1.12 輸入輸出(I/O)
1.13 檔案I/O
1.14 編程風格
1.15 參考讀物
1.16 光線跟蹤
第二章 數學模組
2.1頭檔案
2.1.1BkDefs.H頭檔案
2.1.2BkMath.H頭檔案
2.2編譯這些模組
2.3BkMath.C程式
2.4 基本數學函式
2.4.1Radians和Degrees 函式
2.4.2CosD和SinD函式
2.4.3Power函式
2.4.5Log函式
2.4.6Exp10函式
2.4.7Sign和Intsign函式
2.4.8IntSqrt函式
2.4.9IntPower函式
2.4.10 MIN和MAX函式
2.5 向量和矩陣函式
2.5.1Vec和VecInt函式
2.5.2UnVec和UnVecInt函式
2.5.3VecDot函式
2.5.4VecCross函式
2.5.5VecLen函式
2.5.6VecNormalize函式
2.5.7VecMatxMult函式
2.5.8VecSub和VecSubIn函式
2.5.9VecAdd函式
2.5.10 VecAdd3函式
2.5.11 VecCopy和VecCopyInt函式
2.5.12 VecLinComb函式
2.5.13 VecScalMult、VecScalMultl和VecScalMultInt函式
2.5.14 VecAddScalMult函式
2.5.15 VecNull和VecNullInt函式
2.5.16 VecElemMult函式
2.5.17 VecMin和VecMax函式
2.5.18 VecNgate函式
2.6 仿射變換例程
2.6.1 ZeroMatrix函式
2.6.2 Translate3D函式
2.6.3 Scale3D)函式
2.6.4 Rotate3D函式
2.6.5 Multiply3DMatries函式
2.6.6 MatCopy函式
2.6.7 PrepareMatrix函式
2.6.8 PrepareInvMatrix函式
2.6.9 Tansform函式
2.7 偽隨機數的生成
2.7.1 InitRand函式
2.7.2 Rand函式
2.7.3 RandInt函式
第三章 圖形界面模組
3.1 BkGlobs.H頭檔案
3.2 BkGraph.H頭檔案
3.3 BkGraph.C程式
3.3.1Plot函式
3.3.2 Clear_paletre函式
3.3.3 Set_Palette函式
3.3.4 Init_Palette函式
3.3.5 Init_Palette_2函式
3.3.6 CyClePalette函式
3.3.7 Swap函式
3.3.8 Circle函式
3.3.9 Line函式
3.3.10 Minl和Maxl函式
3.3.11 rivial reject函式
3.3.12 Clip_To_Screen函式
3.3.13 Init_Graphics函式
3.3.14 Set_Graphics_Mode函式
3.3.15 Wait_For_Key函式
3.3.16 Exit_Graphies函式
3.3.17 Title函式
3.4 三維畫圖函式
3.4.1 Init_Plotting函式
3.4 .2 Init_Perspective函式
3.4.3 MapCoordinates函式
3.4.5 Cartesian_Plot_3D函式
3.4.6 Cylindrical_Plot3D函式
3.4.7 SphericalPlot 3D函式
3.4.8 Draw_Line_3D函式
3.5像素函式
3.5.1Put_Pixel函式
3.5.2Get_Pixel函式
3.6設定坐標軸和調色板的函式
3.6.1Put_Axis_And_Palette函式
3.6.2Display_Axis函式
3.6.3Display_Palette函式
3.6.4Axis_And_Palette函式
3.7使用模組
第四章 使用模組
4.1Crystal.C檔案
4.2Plants.C檔案
4.3Stars-3D.C程式
4.4三維圓周運動模擬示例程式
4.5真實物體
第二部分 光線追蹤
第五章 光線追蹤程式數學模組
第六章 光線追蹤理論
6.1即時光線追蹤
6.2光線的反射
6.3折射
6.4問題,問題,問題!
6.5答案,答案,答案!
6.6細節
第七章 光線追蹤程式
7.1投影圖形
7.2圖像質量和變形
7.3防變形方法
7.4均勻採樣
7.5統計密集採樣
7.6結果
7.7簡單的照相機模型
7.8trace函式
7.9背景
第八章 光線-物體相交測試
8.1物體的定義
8.1.1光線的參數表示
8.1.2與球面相交
8.1.3與二次曲面相交
8.2曲面法線計算
8.3與平面物體相交
8.4三角形小塊
8.5構造複雜物體
8.6構造實體幾何
8.6.1包圍體
8.6.2包圍面
8.7層次樹
8.8搜尋物體
8.9其它算法
第九章 看見光亮
9.1陰影模型
9.1.1背景色(K↓a)
9.1.2漫反射顏色(K↓d)
9.1.3鏡面反射迭加(K↓h)
9.1.4反射率(K↓a)及折射率(K↓t
9.2紋理,紋理,紋理
9.3映射圖象
9.4實體紋理構造
9.5噪聲及擾動
9.6實體紋理樣式
9.7球面紋理
9.8製造波紋
9.9凹凸紋理
9.10大氣
9.11陰影
9.12關於代碼
第十章 光線追蹤程式代碼
10.1分離和解釋程式
10.1.1預處理
10.1.2記號分析程式
10.2基本體檔案
10.3掃描螢幕
10.4追蹤
10.5相交
10.6包圍平面
10.7陰影處理
10.8通向BOB的途徑
10.9記憶體問題
10.10構成畫面
第十一章 如何使用光線追蹤程式
11.1運行Bob
11.2Bob命令
11.3統計數字
11.4輸入檔案(.B)格式
11.5輸入檔案布局
11.6預處理程式
11.6.1宏
11.6.2包含指令
11.7EDL分析程式
11.7.1studio結構
11.7.2studio參數
11.8光源
11.9表面
11.9.1凹凸紋理
11.9.2加紋理的表面
11.10基本體
11.10.1球
11.10.2環
11.10.3多邊形
11.10.4三角形小塊
11.10.5圓錐
11.11變換
11.12圖像紋理
11.13剪下
11.14有關說明
第三部分 生成光線追蹤程式所需的物體資料庫
第十二章 過程物體資料庫
12.1生長的樹
12.2環形與環面
12.3一個令人困惑的物體
12.4光照和雪花球
12.5一塊吸收性極好的海綿
12.6一個六角形
12.7更為複雜的資料庫
第十三章 Z緩衝區數據
13.1Z緩衝區數據的線框輪廓
13.2光線追蹤的Z緩衝區資料庫
13.3生成Z緩衝區資料庫的程式
13.4生成Z緩衝區資料庫的分形程式
13.5三維Mandelbrot集
13.6三維Julia集
13.7使用四元數的分形
13.8四元數數學
13.9生成四元數分形資料庫
13.10地形Z緩衝區
13.11Smooth.EXE
13.12移動山脈
第四部分 物體資料庫的CAD產品
第十四章 三維資料庫建模器
14.1資料庫建模程式的功能
14.1.1基本體支持和操作
14.1.2物體支持和操作
14.1.3適當時間內生成資料庫視圖
14.14在資料庫內部自由移動
14.1.5隱藏資料庫細節
14.2層次結構的重要性
14.2.1重複利用性
14.2.2靈活性
14.2.3區域性和可擴展性
14.2.4高效性
14.3Bob的資料庫層次:基本體、物體、畫面
14.4Ed:Bob的簡單資料庫建模程式
14.4.1啟動Ed
14.4.2Ed螢幕
14.4.3告訴Ed做什麼
14.4.4系統參數
14.5系統模式
14.5.1讀寫畫面檔案
14.5.2移動觀察點
14.5.3選擇物體
14.5.4實例化及刪除物體
14.5.5編輯物體位置和比例
14.5.6修改studio定義
14.5.7編輯studio參數
14.5.8退出studio模式
14.5.9編輯物體
14.5.10編輯物體結構
14.5.11多邊形的一個特例
14.5.12編輯物體特徵
14.5.13退出物體模式
14.5.14退出
14.6Ed原始碼總覽
14.6.1Ed原始碼使用的規則
14.6.2Ed基本數據結構
14.6.3Ed全局變數
14.6.4Ed主要的程式元素
14.6Ed輸出檔案的局限
第五部分 計算機圖形學的圖像處理技術
第十五章 圖像處理
15.1IMG2GIF。C
15.1.1直接指定調色板
15.1.2多數法
15.1.3中分法
15.1.4固定調色板
15.2有趣有益的抖動法
15.3建立.GIF檔案
15.4IMG2GIF.C的技術說明
15.5檔案格式
15.5.1Bob的.IMG檔案格式
15.5.2Palette.MAP檔案格式
15.6改善圖像質量
15.7圖像顯示
第六部分 圖形硬體
第十六章 圖形硬體驅動程式
16.1 24位顏色
16.2 Bob結束語
第七部分 本書之外的內容
第十七章 超越Bob
17.1製作圖形
17.2動畫
17.2.1車輪
17.2.2運動模糊
17.2.3紋理的問題
17.3實時光線追蹤
17.4高級光照模型
17.5輻射
17.5.1更多的近似
17.5.2為何使用輻射模型
17.6真實三維圖像
17.7何去何從
前言
緒論
0.1本書的組織
0.2第一部分
0.2.1數學模組
0.2.2圖形界面模組
0.2.3使用這些模組
0.3第二部分
0.3.1光線追蹤理論
0.3.2光線追蹤程式
0.3.3光線-物體相交測試
0.3.4陰影、紋理和光照
0.3.5複習光線追蹤程式代碼
0.3.6怎樣使用光線追蹤程式
0.4第三部分
0.5第四部分
0.6第五部分
0.7第六部分
0.8第七部分
0.9軟體和硬體要求
0.10總結
第一部分 標準和通用模組
第一章 標準和C語言
1.1為什麼選用C語言
1.2程式語言的概念
1.3變數和數據類型
1.4運算符
1.5程式控制
1.6函式
1.7宏
1.8指針和數組
1.9記憶體
1.10結構
1.11 typedef
1.12 輸入輸出(I/O)
1.13 檔案I/O
1.14 編程風格
1.15 參考讀物
1.16 光線跟蹤
第二章 數學模組
2.1頭檔案
2.1.1BkDefs.H頭檔案
2.1.2BkMath.H頭檔案
2.2編譯這些模組
2.3BkMath.C程式
2.4 基本數學函式
2.4.1Radians和Degrees 函式
2.4.2CosD和SinD函式
2.4.3Power函式
2.4.5Log函式
2.4.6Exp10函式
2.4.7Sign和Intsign函式
2.4.8IntSqrt函式
2.4.9IntPower函式
2.4.10 MIN和MAX函式
2.5 向量和矩陣函式
2.5.1Vec和VecInt函式
2.5.2UnVec和UnVecInt函式
2.5.3VecDot函式
2.5.4VecCross函式
2.5.5VecLen函式
2.5.6VecNormalize函式
2.5.7VecMatxMult函式
2.5.8VecSub和VecSubIn函式
2.5.9VecAdd函式
2.5.10 VecAdd3函式
2.5.11 VecCopy和VecCopyInt函式
2.5.12 VecLinComb函式
2.5.13 VecScalMult、VecScalMultl和VecScalMultInt函式
2.5.14 VecAddScalMult函式
2.5.15 VecNull和VecNullInt函式
2.5.16 VecElemMult函式
2.5.17 VecMin和VecMax函式
2.5.18 VecNgate函式
2.6 仿射變換例程
2.6.1 ZeroMatrix函式
2.6.2 Translate3D函式
2.6.3 Scale3D)函式
2.6.4 Rotate3D函式
2.6.5 Multiply3DMatries函式
2.6.6 MatCopy函式
2.6.7 PrepareMatrix函式
2.6.8 PrepareInvMatrix函式
2.6.9 Tansform函式
2.7 偽隨機數的生成
2.7.1 InitRand函式
2.7.2 Rand函式
2.7.3 RandInt函式
第三章 圖形界面模組
3.1 BkGlobs.H頭檔案
3.2 BkGraph.H頭檔案
3.3 BkGraph.C程式
3.3.1Plot函式
3.3.2 Clear_paletre函式
3.3.3 Set_Palette函式
3.3.4 Init_Palette函式
3.3.5 Init_Palette_2函式
3.3.6 CyClePalette函式
3.3.7 Swap函式
3.3.8 Circle函式
3.3.9 Line函式
3.3.10 Minl和Maxl函式
3.3.11 rivial reject函式
3.3.12 Clip_To_Screen函式
3.3.13 Init_Graphics函式
3.3.14 Set_Graphics_Mode函式
3.3.15 Wait_For_Key函式
3.3.16 Exit_Graphies函式
3.3.17 Title函式
3.4 三維畫圖函式
3.4.1 Init_Plotting函式
3.4 .2 Init_Perspective函式
3.4.3 MapCoordinates函式
3.4.5 Cartesian_Plot_3D函式
3.4.6 Cylindrical_Plot3D函式
3.4.7 SphericalPlot 3D函式
3.4.8 Draw_Line_3D函式
3.5像素函式
3.5.1Put_Pixel函式
3.5.2Get_Pixel函式
3.6設定坐標軸和調色板的函式
3.6.1Put_Axis_And_Palette函式
3.6.2Display_Axis函式
3.6.3Display_Palette函式
3.6.4Axis_And_Palette函式
3.7使用模組
第四章 使用模組
4.1Crystal.C檔案
4.2Plants.C檔案
4.3Stars-3D.C程式
4.4三維圓周運動模擬示例程式
4.5真實物體
第二部分 光線追蹤
第五章 光線追蹤程式數學模組
第六章 光線追蹤理論
6.1即時光線追蹤
6.2光線的反射
6.3折射
6.4問題,問題,問題!
6.5答案,答案,答案!
6.6細節
第七章 光線追蹤程式
7.1投影圖形
7.2圖像質量和變形
7.3防變形方法
7.4均勻採樣
7.5統計密集採樣
7.6結果
7.7簡單的照相機模型
7.8trace函式
7.9背景
第八章 光線-物體相交測試
8.1物體的定義
8.1.1光線的參數表示
8.1.2與球面相交
8.1.3與二次曲面相交
8.2曲面法線計算
8.3與平面物體相交
8.4三角形小塊
8.5構造複雜物體
8.6構造實體幾何
8.6.1包圍體
8.6.2包圍面
8.7層次樹
8.8搜尋物體
8.9其它算法
第九章 看見光亮
9.1陰影模型
9.1.1背景色(K↓a)
9.1.2漫反射顏色(K↓d)
9.1.3鏡面反射迭加(K↓h)
9.1.4反射率(K↓a)及折射率(K↓t
9.2紋理,紋理,紋理
9.3映射圖象
9.4實體紋理構造
9.5噪聲及擾動
9.6實體紋理樣式
9.7球面紋理
9.8製造波紋
9.9凹凸紋理
9.10大氣
9.11陰影
9.12關於代碼
第十章 光線追蹤程式代碼
10.1分離和解釋程式
10.1.1預處理
10.1.2記號分析程式
10.2基本體檔案
10.3掃描螢幕
10.4追蹤
10.5相交
10.6包圍平面
10.7陰影處理
10.8通向BOB的途徑
10.9記憶體問題
10.10構成畫面
第十一章 如何使用光線追蹤程式
11.1運行Bob
11.2Bob命令
11.3統計數字
11.4輸入檔案(.B)格式
11.5輸入檔案布局
11.6預處理程式
11.6.1宏
11.6.2包含指令
11.7EDL分析程式
11.7.1studio結構
11.7.2studio參數
11.8光源
11.9表面
11.9.1凹凸紋理
11.9.2加紋理的表面
11.10基本體
11.10.1球
11.10.2環
11.10.3多邊形
11.10.4三角形小塊
11.10.5圓錐
11.11變換
11.12圖像紋理
11.13剪下
11.14有關說明
第三部分 生成光線追蹤程式所需的物體資料庫
第十二章 過程物體資料庫
12.1生長的樹
12.2環形與環面
12.3一個令人困惑的物體
12.4光照和雪花球
12.5一塊吸收性極好的海綿
12.6一個六角形
12.7更為複雜的資料庫
第十三章 Z緩衝區數據
13.1Z緩衝區數據的線框輪廓
13.2光線追蹤的Z緩衝區資料庫
13.3生成Z緩衝區資料庫的程式
13.4生成Z緩衝區資料庫的分形程式
13.5三維Mandelbrot集
13.6三維Julia集
13.7使用四元數的分形
13.8四元數數學
13.9生成四元數分形資料庫
13.10地形Z緩衝區
13.11Smooth.EXE
13.12移動山脈
第四部分 物體資料庫的CAD產品
第十四章 三維資料庫建模器
14.1資料庫建模程式的功能
14.1.1基本體支持和操作
14.1.2物體支持和操作
14.1.3適當時間內生成資料庫視圖
14.14在資料庫內部自由移動
14.1.5隱藏資料庫細節
14.2層次結構的重要性
14.2.1重複利用性
14.2.2靈活性
14.2.3區域性和可擴展性
14.2.4高效性
14.3Bob的資料庫層次:基本體、物體、畫面
14.4Ed:Bob的簡單資料庫建模程式
14.4.1啟動Ed
14.4.2Ed螢幕
14.4.3告訴Ed做什麼
14.4.4系統參數
14.5系統模式
14.5.1讀寫畫面檔案
14.5.2移動觀察點
14.5.3選擇物體
14.5.4實例化及刪除物體
14.5.5編輯物體位置和比例
14.5.6修改studio定義
14.5.7編輯studio參數
14.5.8退出studio模式
14.5.9編輯物體
14.5.10編輯物體結構
14.5.11多邊形的一個特例
14.5.12編輯物體特徵
14.5.13退出物體模式
14.5.14退出
14.6Ed原始碼總覽
14.6.1Ed原始碼使用的規則
14.6.2Ed基本數據結構
14.6.3Ed全局變數
14.6.4Ed主要的程式元素
14.6Ed輸出檔案的局限
第五部分 計算機圖形學的圖像處理技術
第十五章 圖像處理
15.1IMG2GIF。C
15.1.1直接指定調色板
15.1.2多數法
15.1.3中分法
15.1.4固定調色板
15.2有趣有益的抖動法
15.3建立.GIF檔案
15.4IMG2GIF.C的技術說明
15.5檔案格式
15.5.1Bob的.IMG檔案格式
15.5.2Palette.MAP檔案格式
15.6改善圖像質量
15.7圖像顯示
第六部分 圖形硬體
第十六章 圖形硬體驅動程式
16.1 24位顏色
16.2 Bob結束語
第七部分 本書之外的內容
第十七章 超越Bob
17.1製作圖形
17.2動畫
17.2.1車輪
17.2.2運動模糊
17.2.3紋理的問題
17.3實時光線追蹤
17.4高級光照模型
17.5輻射
17.5.1更多的近似
17.5.2為何使用輻射模型
17.6真實三維圖像
17.7何去何從