我有一个Ax By Cz d = 0形式的平面方程。现在使用鼠标点我想在那架飞机上画画。

时间:2012-11-20 05:36:54

标签: c# opengl

我有Ax + By + Cz d = 0形式的平面方程。我能够在那架飞机上画一个四边形。现在使用鼠标点我想在那架飞机上画画。为此,我试图从鼠标点在飞机上获得一个点。为此我正在从相机到通过该鼠标点的平面制作光线。但是当我试图渲染时,它并没有定位在正确的位置。

我通过这种方式绘制四边形:                 OpenGL.glPushMatrix();

            OpenGL.glMultMatrix(mTransform);

            OpenGL.glColor(Color.FromArgb(60, Color.BlanchedAlmond));

            OpenGL.glPushMatrix();
            Matrix4 transform = Matrix4.Identity;
            Quaternion planeRotation = Vector3.ZAxis.GetRotationTo(mMarkUpPlane.Normal);
            Vector3 planeOrigin = mMarkUpPlane.Normal * -mMarkUpPlane.D;

            transform.Matrix3 = planeRotation.GetRotationMatrix();
            transform.Translation = planeOrigin;
            OpenGL.glMultMatrix(transform);

            const double PlaneWidth = 1500;

            OpenGL.glBegin(OpenGL.GL_QUADS);

            OpenGL.glVertex3d(PlaneWidth, PlaneWidth, 0.0);
            OpenGL.glVertex3d(PlaneWidth, -PlaneWidth, 0.0);
            OpenGL.glVertex3d(-PlaneWidth, -PlaneWidth, 0.0);
            OpenGL.glVertex3d(-PlaneWidth, PlaneWidth, 0.0);

            OpenGL.glEnd();
            OpenGL.glPopMatrix();
            OpenGL.glPopMatrix();

0 个答案:

没有答案