Beispiel #1
0
        public virtual void Draw(Vector3d location, Quaterniond rotation)
        {
            Matrix4d trans;
            Matrix4d rot;
            Matrix4d sca;
            Matrix4d temp;
            Vector3d axis;
            double   angle;

            // Translate and rotate stuff.
            trans = Matrix4d.CreateTranslation(location);
            rotation.ToAxisAngle(out axis, out angle);
            Matrix4d.CreateFromAxisAngle(axis, angle, out rot);
            sca = Matrix4d.Scale(scale.X, 1, scale.Y);

            temp = Matrix4d.Mult(Graphics.Modelview, trans);
            temp = Matrix4d.Mult(sca, Matrix4d.Mult(rot, temp));

            GL.PushMatrix();
            GL.LoadMatrix(ref temp);
            //Console.WriteLine("Matrix'd");

            // Do drawing stuff.
            //GL.ClientActiveTexture(TextureUnit.Texture0);
            //GL.ActiveTexture(TextureUnit.Texture1);
            //GL.BindTexture(TextureTarget.Texture2D, tex);
            //int loc = GL.GetUniformLocation(Graphics.CurrentShader, "tex1");
            //GL.Uniform1(loc, 1);
            //Console.WriteLine("Texture'd {0}", tex);

            material.Draw();
            geometry.Draw();
            GL.PopMatrix();
        }
Beispiel #2
0
 private void polarize(Svd<double> DG_SVD, out Vector3d RotationAxis, out double RotationAngle)
 {
     DenseMatrix RotationalMatrix = (DenseMatrix)DG_SVD.U.Multiply(DG_SVD.VT);
     Quaterniond RotationQ = OpenTK_To_MathNET.MatrixToQuaternion(RotationalMatrix);
     RotationQ.Normalize();
     RotationQ.ToAxisAngle(out RotationAxis, out RotationAngle);
 }
Beispiel #3
0
        public virtual void Draw(Vector3d location, Quaterniond rotation)
        {
            Matrix4d trans;
            Matrix4d rot;
            Matrix4d sca;
            Matrix4d temp;
            Vector3d axis;
            double   angle;

            //Console.WriteLine("DDDDrawing at {0},{1},{2}", location.X, location.Y, location.Z);

            // Translate and rotate stuff.
            trans = Matrix4d.CreateTranslation(location);
            rotation.ToAxisAngle(out axis, out angle);
            Matrix4d.CreateFromAxisAngle(axis, angle, out rot);
            sca = Matrix4d.Scale(scale.X, 1, scale.Y);

            temp = Matrix4d.Mult(Graphics.Modelview, trans);
            temp = Matrix4d.Mult(sca, Matrix4d.Mult(rot, temp));

            //Console.WriteLine("MMMMatrix:\n{0}", temp);
            GL.PushMatrix();
            GL.LoadMatrix(ref temp);
            //Console.WriteLine("Matrix'd");

            // Do drawing stuff.
            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, frames[animFrame]);
            geometry.Draw();
            GL.PopMatrix();
        }
Beispiel #4
0
        /// <summary>
        /// Build a rotation matrix from the specified quaternion.
        /// </summary>
        /// <param name="q">Quaternion to translate.</param>
        /// <param name="result">Matrix result.</param>
        public static void CreateFromQuaternion(ref Quaterniond q, out Matrix3d result)
        {
            Vector3d axis;
            double   angle;

            q.ToAxisAngle(out axis, out angle);
            CreateFromAxisAngle(axis, angle, out result);
        }