0

我想知道在开始结束批处理中使用 for 循环写入点是否有效,所以我阅读了球体算法并根据我的阅读产生了这个。正如您在下面的输出屏幕截图中看到的那样,它存在一些问题。我的目标是在程序上生成一个球体,然后在运行时对其进行修改。

但我想将我的目标设定在短期内,并找出面部不正确的原因。有人有想法么?

我有这个代码:

private void openGLControl_OpenGLDraw(object sender, RenderEventArgs e)
    {
        //  Get the OpenGL object.
        OpenGL gl = openGLControl.OpenGL;

        //  Clear the color and depth buffer.
        gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

        //  Load the identity matrix.
        gl.LoadIdentity();

        //  Rotate around the Y axis.
        gl.Rotate(rotation, 0.0f, 1.0f, 0.0f);

        //Draw a ball
        //Drawing Mode
        gl.PolygonMode(SharpGL.Enumerations.FaceMode.FrontAndBack, SharpGL.Enumerations.PolygonMode.Lines);
        //ball fields
        double radius = 4.0d;
        const double DEGREE = Math.PI/11.25;
        double x = 0;
        double y = 0;
        double z = 0;
        // ball batch
        gl.Begin(OpenGL.GL_TRIANGLE_STRIP_ADJACENCY);
        for (double j = 0.0d; j < Math.PI; j = j +DEGREE)
        {

            for (double i = 0; i < 2 * Math.PI; i = i + DEGREE)
            {

                x = radius * Math.Cos(i) * Math.Sin(j);
                y = radius * Math.Sin(j) * Math.Sin(i);
                z = radius * Math.Cos(j);
                gl.Color(Math.Abs(x + y), Math.Abs(y + z), Math.Abs(z + x));
                gl.Vertex(x, y, z);
            }

        }
        gl.End();

        //  Nudge the rotation.
        rotation += 3.0f;
    }

我的输出的屏幕截图

4

0 回答 0