目錄
部分教
學 實 驗實驗任務書3實驗1繪制金剛石圖案4
1.1實驗目的4
1.2實驗要求4
1.3效果圖4
1.4實驗準備5
1.5實驗步驟5
1.5.1創建Test工程實驗框架5
1.5.2繪制金剛石圖案15
1.5.3寫出實驗報告24
1.6思考與練習24實驗2繪制任意斜率的直線段28
2.1實驗目的28
2.2實驗要求28
2.3效果圖28
2.4實驗準備29
2.5實驗步驟29
2.5.1定義顏色類CRGB29
2.5.2設計CLine直線類32
2.5.3消息映射37
2.5.4寫出實驗報告41
2.6思考與練習41實驗3交互式繪制多邊形45
3.1實驗目的45
3.2實驗要求45
3.3效果圖45
3.4實驗準備46
3.5實驗步驟46
3.5.1人機交互技術46
3.5.2雙緩衝技術48
3.5.3繪制多邊形49
3.5.4設計CPtrArray類49
3.5.5有效邊表填充算法50
3.5.6寫出實驗報告58
3.6思考與練習58實驗4二維幾何變換61
4.1實驗目的61
4.2實驗要求61
4.3效果圖61
4.4實驗準備62
4.5實驗步驟62
4.5.1靜態切分視圖框架62
4.5.2設計左窗格視圖65
4.5.3設計CTestDoc類69
4.5.4設計包含齊次坐標的二維點類CP2 69
4.5.5設計二維幾何變換類70
4.5.6設計雙緩衝74
4.5.7讀入圖形頂點75
4.5.8繪制圖形75
4.5.9踫撞檢測76
4.5.10定時器函數76
4.5.11禁止背景刷新函數77
4.5.12寫出實驗報告77
4.6思考與練習77實驗5直線段裁剪80
5.1實驗目的80
5.2實驗要求80
5.3效果圖80
5.4實驗準備81
5.5實驗步驟81
5.5.1定義CP2類81
5.5.2OnDrw()函數82
5.5.3繪制裁剪窗口82
5.5.4鼠標左鍵按下函數83
5.5.5鼠標移動函數83
5.5.6編碼函數84
5.5.7裁剪函數85
5.5.8寫出實驗報告87
5.6思考與練習87實驗6立方體線框模型正交投影89
6.1實驗目的89
6.2實驗要求89
6.3效果圖89
6.4實驗準備90
6.5實驗步驟90
6.5.1立方體數學模型90
6.5.2三維變換91
6.5.3正交投影93
6.5.4設計三維點類93
6.5.5定義三維變換類95
6.5.6定義點表100
6.5.7定義面表100
6.5.8繪制立方體線框模型101
6.5.9鍵盤控制101
6.5.10動畫控制102
6.5.11寫出實驗報告104
6.6思考與練習104實驗7立方體線框模型透視投影106
7.1實驗目的106
7.2實驗要求106
7.3效果圖106
7.4實驗準備107
7.5實驗步驟107
7.5.1透視投影變換的實現109
7.5.2定義點表110
7.5.3定義面表111
7.5.4繪制立方體111
7.5.5縮小立方體112
7.5.6放大立方體112
7.5.7寫出實驗報告112
7.6思考與練習112實驗8動態三視圖115
8.1實驗目的115
8.2實驗要求115
8.3效果圖115
8.4實驗準備116
8.5實驗步驟116
8.5.1建立多面體的數據結構116
8.5.2創建2×2靜態切分窗格117
8.5.3建立齊次三維點類117
8.5.4建立表面類119
8.5.5內存復制120
8.5.6三視圖變換矩陣122
8.5.7矩陣相乘函數123
8.5.8繪制多面體斜等測圖123
8.5.9繪制三視圖125
8.5.10寫出實驗報告125
8.6思考與練習126實驗9交互繪制Bezier曲線128
9.1實驗目的128
9.2實驗要求128
9.3效果圖128
9.4實驗準備129
9.5實驗步驟129
9.5.1Bezier曲線的分割遞推德卡斯特裡奧算法129
9.5.2德卡斯特裡奧函數130
9.5.3繪制Bezier曲線131
9.5.4繪制控制多邊形131
9.5.5鼠標左鍵按下的函數132
9.5.6鼠標右鍵按下的函數133
9.5.7鼠標移動的函數133
9.5.8寫出實驗報告133
9.6思考與練習134實驗10交互繪制三次B樣條曲線135
10.1實驗目的135
10.2實驗要求135
10.3效果圖135
10.4實驗準備136
10.5實驗步驟136
10.5.1三次B樣條曲線的幾何性質136
10.5.2繪制控制多邊形137
10.5.3繪制三次B樣條曲線138
10.5.4鼠標移動函數138
10.5.5寫出實驗報告139
10.6思考與練習139實驗11旋轉的Koch雪花142
11.1實驗目的142
11.2實驗要求142
11.3效果圖142
11.4實驗準備143
11.5實驗步驟143
11.5.1Koch曲線143
11.5.2繪制Koch雪花145
11.5.3雙緩衝函數145
11.5.4分形函數146
11.5.5Koch函數147
11.5.6寫出實驗報告147
11.6思考與練習147實驗12顏色漸變立方體150
12.1實驗目的150
12.2實驗要求150
12.3效果圖150
12.4實驗準備151
12.5實驗步驟151
12.5.1定義矢量類CVector151
12.5.2定義顏色點類154
12.5.3定義點表155
12.5.4定義面表156
12.5.5繪制物體156
12.5.6顏色漸變有效邊表填充算法157
12.5.7寫出實驗報告165
12.6思考與練習165實驗13地理劃分線框球169
13.1實驗目的169
13.2實驗要求169
13.3效果圖169
13.4實驗準備170
13.5實驗步驟170
13.5.1球體幾何模型170
13.5.2繪制球體173
13.5.3寫出實驗報告175
13.6思考與練習175實驗14交叉條消隱180
14.1實驗目的180
14.2實驗要求180
14.3效果圖180
14.4實驗準備181
14.5實驗步驟181
14.5.1交叉條數學模型181
14.5.2疊加條數學模型183
14.5.3消隱算法184
14.5.4定義深度緩衝點表185
14.5.5定義深度排序點表186
14.5.6設置坐標繫187
14.5.7禁用深度緩衝繪制交叉條187
14.5.8啟用深度緩衝繪制交叉條188
14.5.9深度排序函數188
14.5.10設置背景色為黑色189
14.5.11深度緩衝消隱算法189
14.5.12寫出實驗報告199
14.6思考與練習199實驗15立方體光照模型201
15.1實驗目的201
15.2實驗要求201
15.3效果圖201
15.4實驗準備202
15.5實驗步驟202
15.5.1簡單光照模型202
15.5.2設計光源類CLightSource205
15.5.3設計材質類CMaterial207
15.5.4設計光照類CLighting208
15.5.5設計默認光源顏色和材質顏色211
15.5.6設計紅色、綠色和藍色光源菜單項211
15.5.7設計紅寶石、綠寶石和藍寶石材質菜單項212
15.5.8設計變換類213
15.5.9寫出實驗報告217
15.6思考與練習217實驗16球體Gouraud光照模型221
16.1實驗目的221
16.2實驗要求221
16.3效果圖221
16.4實驗準備222
16.5實驗步驟222
16.5.1雙線性光強插值模型算法222
16.5.2設置光源顏色和材質顏色222
16.5.3讀入網格小面表223
16.5.4讀入網格頂點表224
16.5.5計算面片頂點的顏色225
16.5.6繪制球面226
16.5.7寫出實驗報告227
16.6思考與練習227實驗17球體Phong光照模型229
17.1實驗目的229
17.2實驗要求229
17.3效果圖229
17.4實驗準備230
17.5實驗步驟230
17.5.1Phong雙線性法矢插值模型230
17.5.2修改CAET類231
17.5.3修改CZBuffer類231
17.5.4光照環境初始化240
17.5.5繪制球面函數241
17.5.6寫出實驗報告242
17.6思考與練習242實驗18立方體紋理映射245
18.1實驗目的245
18.2實驗要求245
18.3效果圖245
18.4實驗準備246
18.5實驗步驟246
18.5.1定義CFacet類246
18.5.2讀入位圖紋理247
18.5.3定義面表248
18.5.4繪制立方體250
18.5.5填充立方體表面250
18.5.6寫出實驗報告253
18.6思考與練習253第二部分課 程 設 計課程設計任務書259課程設計Ⅰ光柵掃描演示繫統261
Ⅰ.1設計目標261
Ⅰ.2設計效果261
Ⅰ.3總體設計263
Ⅰ.4類的設計264
Ⅰ.5視圖的設計281
Ⅰ.6結論293課程設計Ⅱ遞歸動態球體演示繫統294
Ⅱ.1設計目標294
Ⅱ.2設計效果294
Ⅱ.3總體設計296
Ⅱ.4類的設計297
Ⅱ.5視圖的設計300
Ⅱ.6結論309課程設計Ⅲ圓環動態紋理演示繫統311
Ⅲ.1設計目標311
Ⅲ.2設計效果311
Ⅲ.3總體設計313
Ⅲ.4類的設計317
Ⅲ.5視圖的設計337
Ⅲ.6結論346課程設計Ⅳ動態光源演示繫統348
Ⅳ.1設計目標348
Ⅳ.2設計效果348
Ⅳ.3總體設計350
Ⅳ.4類的設計350
Ⅳ.5視圖的設計356
Ⅳ.6結論360課程設計Ⅴ3DS接口演示繫統361
Ⅴ.1設計目標361
Ⅴ.2設計效果362
Ⅴ.3總體設計362
Ⅴ.4類的設計364
Ⅴ.5視圖的設計372
Ⅴ.6結論376參考文獻378