Ejemplo n.º 1
0
        private void drawCircle(MultiVector circle, Color color)
        {
            MultiVector n, c;
            double      r;

            IPNS.GetCircleParams(circle, out n, out c, out r);

            MultiVector rotAxis  = MultiVector.CrossProduct(Basis.E3, n);
            double      rotAngle = Math.Acos(n.E3);

            if (rotAxis == MultiVector.Zero)
            {
                rotAxis  = Basis.E1;
                rotAngle = 0.0;
            }

            GL.Color3(color);

            GL.PushMatrix();

            GL.Translate(c.E1, c.E2, c.E3);
            GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3);
            GL.Scale(r, r, r);

            drawModel(circleVbo);

            GL.PopMatrix();
        }
Ejemplo n.º 2
0
        private void drawPlane(MultiVector plane, Color color)
        {
            MultiVector n;
            double      d;

            IPNS.GetPlaneParams(plane, out n, out d);

            MultiVector rotAxis  = MultiVector.CrossProduct(Basis.E3, n);
            double      rotAngle = Math.Acos(n.E3);

            if (rotAxis == MultiVector.Zero)
            {
                rotAxis  = Basis.E1;
                rotAngle = 0.0;
            }

            GL.Color3(color);

            GL.PushMatrix();

            GL.Translate(n.E1 * d, n.E2 * d, n.E3 * d);
            GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3);

            drawModel(planeVbo);

            GL.PopMatrix();
        }
Ejemplo n.º 3
0
        private void drawLine(MultiVector line, Color color)
        {
            MultiVector t, d;

            IPNS.GetLineParams(line, out t, out d);

            MultiVector rotAxis  = MultiVector.CrossProduct(Basis.E3, d);
            double      rotAngle = Math.Acos(d.E3);

            if (rotAxis == MultiVector.Zero)
            {
                rotAxis  = Basis.E1;
                rotAngle = 0.0;
            }

            GL.Color3(color);

            GL.PushMatrix();

            GL.Translate(t.E1, t.E2, t.E3);
            GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3);

            drawModel(lineVbo);

            GL.PopMatrix();
        }
Ejemplo n.º 4
0
        private void drawVector(MultiVector vector, Color color)
        {
            GL.Color3(color);

            MultiVector rotAxis  = MultiVector.CrossProduct(Basis.E3, vector);
            double      rotAngle = Math.Acos(vector.E3 / vector.Length);;

            if (rotAxis == MultiVector.Zero)
            {
                rotAxis  = Basis.E1;
                rotAngle = 0.0;
            }


            double length = vector.Length;

            GL.PushMatrix();

            GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3);
            GL.Scale(length, length, length);

            drawModel(vectorLineVbo);

            GL.PopMatrix();

            GL.PushMatrix();

            GL.Translate(vector.E1, vector.E2, vector.E3);
            GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3);

            drawModel(vectorArrowVbo);

            GL.PopMatrix();
        }