本处代码主要为各章中除章节末的编程实例之外的有关代码,现全部贴出以飨读者。
第3章 二维图形生成
3.1 直线生成算法
3.1.1 数值微分法
1 | void LineDDA(int x1, int y1, int x2, int y2, int color) |
3.1.2 逐点比较法
1 | void PrintLine(int x1, int y1, int x2, int y2, int color) |
3.1.3 Bresenham画线法
1 | void swap_value (int* a, int* b) |
3.1.4 中点画线法
1 | void MidPLine(int x0, int y0, int x1, int y1, int color) |
3.2 圆弧绘制算法
3.2.1 数值微分法
1. Bresenham算法
1 | //8路对称 |
2. 中点画圆算法
1 | //Cirpot函数与上述Bresenham算法代码中的Cirpot函数相同 |
3.2.2 角度离散法绘制圆弧和椭圆弧
1 | void Arc_OpenGL(int xc, int yc, double r, double ts, double te) |
3.3.1 种子填充算法
1 | //四连通漫水法伪代码 |
第5章 二维观察
5.3.2 直线裁剪
1. Cohen-Sutherland编码裁剪算法
1 | # define LEFT 1 |
2.Liang-Barsky参数化裁剪算法
1 | //x1,y1,x2,y2为直线端点坐标,XL,XR,YB,YT为窗口边界信息 |
第7章 三维对象
7.3.5 编程实例——简单实体构建
1 | #include <gl/glut.h> |
7.4.2 Hermite曲线
1 | class Point //点类 |
7.4.3 Bezier曲线
3.三次Bezier曲线的绘制
1 | //绘制由p0,p1,p2,p3确定的Bezier曲线 |
4.离散生成Beizer曲线的de Casteljau算法
1 | void Casteljau(Point p0, Point p1, Point p2, Point p3) |
第8章真实感图形技术
8.3.4 OpenGL中的颜色模型
1 | #include <GL/glut.h> |