// --- Callbacks --- #region Display() private static void Display() { float[] knots = { 0, 0, 0, 0, 1, 1, 1, 1 }; int i, j; Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glPushMatrix(); Gl.glRotatef(330, 1, 0, 0); Gl.glScalef(0.5f, 0.5f, 0.5f); Glu.gluBeginSurface(nurb); Glu.gluNurbsSurface(nurb, 8, knots, 8, knots, 4 * 3, 3, controlPoints, 4, 4, Gl.GL_MAP2_VERTEX_3); Glu.gluEndSurface(nurb); if (showPoints) { Gl.glPointSize(5.0f); Gl.glDisable(Gl.GL_LIGHTING); Gl.glColor3f(1, 1, 0); Gl.glBegin(Gl.GL_POINTS); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { Gl.glVertex3f(controlPoints[i, j, 0], controlPoints[i, j, 1], controlPoints[i, j, 2]); } } Gl.glEnd(); Gl.glEnable(Gl.GL_LIGHTING); } Gl.glPopMatrix(); Gl.glFlush(); }
// --- Callbacks --- #region Display() private void Display() { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glPushMatrix(); Gl.glTranslatef(4.0f, 4.5f, 2.5f); Gl.glRotatef(220.0f, 1.0f, 0.0f, 0.0f); Gl.glRotatef(115.0f, 0.0f, 1.0f, 0.0f); Gl.glTranslatef(-4.0f, -4.5f, -2.5f); Glu.gluBeginSurface(nurb); Glu.gluNurbsSurface(nurb, SKNOTS, sknots, TKNOTS, tknots, 4 * TPOINTS, 4, controlPoints, SORDER, TORDER, Gl.GL_MAP2_VERTEX_4); Glu.gluEndSurface(nurb); Gl.glPopMatrix(); Gl.glFlush(); }
private static void Display() { float[] knots = { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f }; // counter clockwise float[ , ] edgePoints = { { 0.0f, 0.0f }, { 1.0f, 0.0f }, { 1.0f, 1.0f }, { 0.0f, 1.0f }, { 0.0f, 0.0f } }; // clockwise float[ , ] curvePoints = { { 0.25f, 0.5f }, { 0.25f, 0.75f }, { 0.75f, 0.75f }, { 0.75f, 0.5f } }; float[] curveKnots = { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f }; // clockwise float[ , ] pwlPoints = { { 0.75f, 0.5f }, { 0.5f, 0.25f }, { 0.25f, 0.5f } }; Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glPushMatrix(); Gl.glRotatef(330.0f, 1.0f, 0.0f, 0.0f); Gl.glScalef(0.5f, 0.5f, 0.5f); Glu.gluBeginSurface(nurb); Glu.gluNurbsSurface(nurb, 8, knots, 8, knots, 4 * 3, 3, controlPoints, 4, 4, Gl.GL_MAP2_VERTEX_3); Glu.gluBeginTrim(nurb); Glu.gluPwlCurve(nurb, 5, edgePoints, 2, Glu.GLU_MAP1_TRIM_2); Glu.gluEndTrim(nurb); Glu.gluBeginTrim(nurb); Glu.gluNurbsCurve(nurb, 8, curveKnots, 2, curvePoints, 4, Glu.GLU_MAP1_TRIM_2); Glu.gluPwlCurve(nurb, 3, pwlPoints, 2, Glu.GLU_MAP1_TRIM_2); Glu.gluEndTrim(nurb); Glu.gluEndSurface(nurb); Gl.glPopMatrix(); Gl.glFlush(); }