void TGLFunWidget::drawFacet23D(TVertex3D* vertex,int size) { TVertex3D vtx[3]; unsigned ind[] = { 0, 1, 2, 3 }; // Порядок обхода вершин четырехугольника if (params.isFace) switch (size) { case 3: // Рисование линейного треугольника drawTriangle3D(vertex); break; case 4: // Рисование четырехугольника vtx[0] = vertex[ind[0]]; vtx[1] = vertex[ind[1]]; vtx[2] = vertex[ind[2]]; drawTriangle3D(vtx); vtx[0] = vertex[ind[0]]; vtx[1] = vertex[ind[2]]; vtx[2] = vertex[ind[3]]; drawTriangle3D(vtx); break; case 6: // Рисование квадратичного треугольника vtx[0] = vertex[0]; vtx[1] = vertex[3]; vtx[2] = vertex[5]; drawTriangle3D(vtx); vtx[0] = vertex[3]; vtx[1] = vertex[1]; vtx[2] = vertex[4]; drawTriangle3D(vtx); vtx[0] = vertex[3]; vtx[1] = vertex[4]; vtx[2] = vertex[5]; drawTriangle3D(vtx); vtx[0] = vertex[5]; vtx[1] = vertex[4]; vtx[2] = vertex[2]; drawTriangle3D(vtx); } if (params.isMesh) { setColor(0,0,0,params.alpha); glBegin(GL_LINE_LOOP); for (int j = 0; j < size; j++) glVertex3f(vertex[j].x, vertex[j].y, vertex[j].z); glEnd(); } if (params.isVertex) { glPointSize(3); glBegin(GL_POINTS); setColor(0,0,0,params.alpha); for (int i = 0; i < size; i++) glVertex3f(vertex[i].x, vertex[i].y, vertex[i].z); glEnd(); } }
void Framework::update(){ setFrameRate( 60 ); double p0[ 3 ] = { 100.0, 100.0, 0.0 }; double p1[ 3 ] = { 400.0, 200.0, 0.4 }; double p2[ 3 ] = { 200.0, 400.0, 0.8 }; double zOffset = ( gCount % 200 ) * 0.01 - 1.0; p0[ 2 ] += zOffset; p1[ 2 ] += zOffset; p2[ 2 ] += zOffset; drawTriangle3D( p0, p1, p2 ); ++gCount; }