简介 1
目录 1
第一部分 通用例程 6
第一章 模块简介 6
1.1 头文件 6
1.1.1 DEFS.H 6
1.1.2 GLOBALS.H 7
1.1.3 MATHB.H 7
1.1.4 GRAPHB.H 9
1.2 编译模块 10
第二章 数学模块 11
2.1.2 CosD和SinD 24
2.1.3 Power 24
2.1.1 Radians和Degrees 24
2.1 数值函数 24
2.1.4 Log 25
2.1.5 Exp10 25
2.1.6 Sign和IntSign 25
2.1.7 IntSqrt 25
2.1.8 IntPower 26
2.1.9 MIN和MAX 26
2.1.10 MIN3和MAX3 26
2.1.11 MIN4和MAX4 26
2.2 矢量和矩阵例程 27
2.2.1 Vec和VecInt 27
2.2.2 UnVec和UnVecInt 27
2.2.3 VecDot 27
2.2 4 VecCross 28
2.2.9 VecAdd 29
2.2.8 VecSub和VecSubInt 29
2.2.5 VecLen 29
2.2.6 VecNormalize 29
2.2.7 VecMatxMult 29
2.2.10 VecAdd3 30
2.2.11 VecCopy和VecCopyInt 30
2.2.12 VecLinComb 30
2.2.13 VecScalMult,VecScalMultI和VecScalMutlInt 30
2.2.14 VecAddScalMult 30
2.2.15 VecNull和VecNullInt 30
2.2.16 VecElemMult 31
2.2.17 VecMin和VecMax 31
2.2.18 VecNcgate 31
2.3 关系变换例程 31
2.3.1 ZeroMatrix 31
2.3.4 Rotate3D 32
2.3.2 Translate3D 32
2.3.3 Scale3D 32
2.3.5 Multiply3DMatrices 33
2.3.6 MatCopy 33
2.3.7 PrepareMatrix 33
2.3.8 PrepareInvMatrix 34
2.3.9 Transform 34
2.4 伪随机数生成 34
2.4.1 InitRand 34
2.4.2 Rand 34
2.4.3 RandInt 34
3.1.3 Pre_Cale 35
3.1.2 Calc_Offsets 35
3.1.1 Scal_Mode 35
第三章 图形界面模块 35
3.1 基本图形函数 35
3.1.4 Plot 36
3.1.5 Clear_Palette 36
3.1.6 Set_Palette 36
3.1.7 Init_Palette 36
3.1.8 Init_Palette_2 37
3.1.9 Cycle_Palctte 37
3.1.10 Swap 37
3.1.11 Circle 37
3.1.12 Draw 38
3.1.13 Init_Graphics 38
3.1.14 Set_Graphics_Mode 38
3.2.1 Init_Plotting 39
3.2.3 Map_Coordinates 39
3.2.2 Init_Perspective 39
3.1.15 Wait_For_Key 39
3.2 三维画图例程 39
3.1.17 Title 39
3.1.16 Exit_Graphies 39
3.2.4 Cartesian_Plot_3D 40
3.2.5 Cylindrical_Piot_3D 40
3.2.6 Spherical_Plot_3D 41
3.2.7 Draw_Line_3D 41
3.3 像素例程 41
3.3.1 Put_Pixel 41
3.4.1 Put_Axis_And_Palette 42
3.4.2 Display_Axis 42
3.4 坐标轴和调色板例程的建立 42
3.2.2 Get_Pixel 42
3.4.3 Display_Palette 43
3.4.4 Axis_And_Palette 43
第四章 使用模块 58
4.1 三维迭代功能系统程序 58
4.1.1 3D-AVR.C IFS程序 58
4.1.2 3D-IFS.C IFS程序 65
4.2 彩和等离子体生成程序 67
4.3 三维轨道模拟程序 71
4.4 一个递归的植物和树生成程序 79
4.5 线性单元自动程序 81
4.6 平面单元自动程序 89
4.7 生命单元自动程序 89
5.1 如何构造对象 90
第五章 模型理论和数据库结构 90
第二部分 三维模型 90
5.2 有关坐标系统的注释 94
5.2.1 浮点和整数坐标 94
5.3 创建对象 94
5.4 声明Vertex和Facet数组 95
5.5 加载和保存数组数据 95
5.6 手工生成数据文件 96
第六章 增加对象到景象 98
6.1 对象数据库结构 98
6.2 初始化和加载对象缓冲区 99
6.3 增加边缘反射器到景象 100
6.4 从磁盘文件增加对象 100
第七章 排序和显示对象 102
7.1 排序对象 102
7.2 在屏幕上画对象 103
7.3 显示对象及其反射 104
7.4 前面是什么 105
第八章 模型建立程序和创建动画 106
8.1 关系变换 106
8.2 观察点和光源矢量 106
8.3 平面法线矢量 107
8.4 光照模型 107
8.5 表面可见性测试 108
8.6 镜像屏幕缓冲区 108
8.7 多边形表面填充例程 109
8.8 写到临时文件 110
8.9 3DMODEL.C程序 110
第九章 创建对象数据库 139
9.1 增加顶点 141
9.3 用MAKEOBJS.C创建对象 142
9.2 初始化顶点数据库生成程序 142
9.4 生成锥面和金字塔数据文件 145
9.5 生成柱面数据文件 148
9.6 生成球面数据文件 150
9.7 生成环面数据文件 153
9.8 生成旋转面数据文件 155
9.9 生成栅格数据文件 160
第十章 编辑景象文件 164
10.1 生成动画脚本 164
10.1.1 创建景象文件 165
10.1.2 加载已有景象文件 165
10.1.3 编辑景象文件 165
10.1.4 保存景象文件到磁盘 165
10.2.1 SPHRPLAN.SCN 166
10.2 动画脚本 166
10.2.2 SPHRWALL.SCN 176
10.2.3 SPINTOR.SCN 198
10.2.4 SOLOFREVSCN 215
第三部分 光线跟踪 263
第十一章 光线跟踪理论 263
11.1 光线跟踪基础 263
11.2 计算光线/对象相交 265
11.3 面相交 265
11.4 二次表面相交 266
11.5 平面对象相交 266
11.6 平行四边形相交 267
11.7 光线跟踪算法 268
12.2 编排约束条件 271
12.1 定义景象:RT文件 271
第十二章 光线跟踪程序 271
12.3 加载RT文件 273
12.4 光线跟踪程序 277
12.5 常量和变量 277
12.6 main程序 278
12.7 初始化噪音函数 279
12.8 扫描景象 279
12.9 跟踪光线 280
12.10 确定颜色 281
12.11 创建纹理表面 282
12.12 完整光线跟踪 282
第十三章 用光线跟踪程序创建图像和动画 345
13.1 光线跟踪动画文件创建程序 346
13.2 BOUNCE.C 346
13.2.1 BOUNCE.C 347
13.2.2 BOUNCE2.C 351
13.2.3 DNA.C 355
13.2.4 ENGINE.C 362
13.2.5 NEWTCRAD.C 369
13.2.6 ORBIT.C 376
13.2.7 ROBOT.C 382
13.2.8 SPIN2.C 387
13.2.9 WAVES.C 392
13.3 光线跟踪的单帧重放 395
13.3.1 DIE CARD.C 395
13.3.2 CANNON C 405
13.3.3 DESERT.C 413
13.3.4 MOUNT.C 417
13.3.5 DESK.C 427
13.3.6 PIANO.C 434
13.3.7 POOLTABL.C 442
13.3.8 TETRA.C 451
13.3.9 TETSPHR2.C 459
13.3.10 WAVYORB C 465
第十四章 动画技术 469
14.1 计算机动画和手工动画 469
14.2 动画方法 470
14.3 平滑技术 470
第十五章 动画程序 471
15.1 ANIMATE C变量 471
15.2.4 Set_Palette 472
15.2.3 Plot 472
15.2.6 Exit_Graphics 472
15.2.5 Init_Graphics 472
15.2.1 Set_Mode 472
15.2 ANIMATE C的函数 472
15.2.2 Init_Screen 472
15.2.7 Set_Text_Screen 473
15.2.8 Allocate_Memory 473
15.2.9 Free_Memory 473
15.2.10 Max 473
15.2.11 Get_Key 473
15.2.12 Get_ANI_File_Name 473
15.2.13 Init_Cells 473
15.2.18 V_Line 474
15.2.22 Animate 474
15.2.21 Init_D_Meter 474
15.2.20 Update_D_Meter 474
15.2.19 Draw_D_Meter 474
15.2.17 H_Line 474
15.2.16 Find_Brightest_Color 474
15.2.15 Do_Title 474
15.2.14 Init_Window 474
15.2.23 Load_Cells 475
15.3 ANIMATE C控制 476
15.4 运行ANIMATE.C 476
第五部分 彩色处理 488
第十六章 用彩色频率分布处理程序减少颜色 488
16.1 彩色频率分布处理程序 488
16.2 PROCESS.C程序和PROCESS.H头文件 489
16.2.1 ANI文件格式 490
16.2.2 DISPRGB.C程序 490
16.2.3 关于图形卡 490
附录A 数学和图形模块函数 503
附图 511