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(); }
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); }
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(); }
/// <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); }