Draw one triangle void triangle( Glfloat *a, GLfloat *b r GlLfloat *c) display one triangle * gIVertex2fv(a)i glVertex2fv(b)i gIVertex2fv(c)i
16 Draw one triangle void triangle( GLfloat *a, GLfloat *b, GLfloat *c) /* display one triangle */ { glVertex2fv(a); glVertex2fv(b); glVertex2fv(c); }
Triangle Subdivision void divide triangle(GLfloat *a, GLfloat *b, Glfloat *c int m /* triangle subdivision using vertex numbers * GLf1oatv0[2],v1[2],v2[2]; int ji if(m>o) for(j=0;j<2;j++)v0[j=(a[j+b[j])/2; for(j=0;j<2;j++)Ⅵ1[j=(a[j+c[j])/2; for(j=0;j2;j++)v2[j]=(b[j]+c[j])/2; divide triangle(a, vo, vl, m-1) divide triangle(c, vl, v2, m-1) divide triangle(b v2, vo, m-1)i else triangle(a, b, c)i /* draw triangle at end of recursion *
17 Triangle Subdivision void divide_triangle(GLfloat *a, GLfloat *b, GLfloat *c, int m) { /* triangle subdivision using vertex numbers */ GLfloat v0[2], v1[2], v2[2]; int j; if(m>0) { for(j=0; j<2; j++) v0[j]=(a[j]+b[j])/2; for(j=0; j<2; j++) v1[j]=(a[j]+c[j])/2; for(j=0; j<2; j++) v2[j]=(b[j]+c[j])/2; divide_triangle(a, v0, v1, m-1); divide_triangle(c, v1, v2, m-1); divide_triangle(b, v2, v0, m-1); } else triangle(a,b,c); /* draw triangle at end of recursion */ }