参考书籍:OpenGL编程基础-第三版
大多数的曲线都将由若干直线段来逼近表示,而曲面也将由一系列多边形来逼近表示。所以首先我们来将一个三角形离散化。
画三角形函数:
在OpenGL中,逆时针方向画图的方向为正面
void triangle(GLfloat *a, GLfloat *b, GLfloat *c)
{
glBegin(GL_TRIANGLES);
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv(c);
glEnd();
}
细分函数
将每条边的中点互相连接,可以在一个三角形中得到四个小三角形
//从一个三角形开始递归地细分n次
void divide_triangle(GLfloat * a, GLfloat * b, GLfloat * c, int m)
{
GLfloat v[3][2]; //存储每条边的中点
int j;
if(m>0)
{
//计算各个边中点的坐标
for(j = 0;j < 2 ;j++)
v[0]