示例#1
0
        // --- 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();
        }
示例#2
0
        // --- 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();
        }
示例#3
0
        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();
        }