Example #1
0
        public GtkGL.Quaternion ToQuaternion()
        {
            if (quat != null)
            {
                return(quat);
            }

            // Assuming the angles are in radians.
            double c1   = Math.Cos(x / 2);
            double s1   = Math.Sin(x / 2);
            double c2   = Math.Cos(y / 2);
            double s2   = Math.Sin(y / 2);
            double c3   = Math.Cos(z / 2);
            double s3   = Math.Sin(z / 2);
            double c1c2 = c1 * c2;
            double s1s2 = s1 * s2;

            quat = new GtkGL.Quaternion(c1c2 * c3 - s1s2 * s3,
                                        c1c2 * s3 + s1s2 * c3,
                                        s1 * c2 * c3 + c1 * s2 * s3,
                                        c1 * s2 * c3 - s1 * c2 * s3);

            return(quat);
        }
Example #2
0
 void ClearCache(object o, EventArgs e)
 {
     // This should happen when the Updated handler fires
     quat = null;
     transMatrix = null;
 }
Example #3
0
        public GtkGL.Quaternion ToQuaternion()
        {
            if(quat != null)
                return quat;

            // Assuming the angles are in radians.
            double c1 = Math.Cos(x/2);
            double s1 = Math.Sin(x/2);
            double c2 = Math.Cos(y/2);
            double s2 = Math.Sin(y/2);
            double c3 = Math.Cos(z/2);
            double s3 = Math.Sin(z/2);
            double c1c2 = c1*c2;
            double s1s2 = s1*s2;

            quat = new GtkGL.Quaternion(c1c2*c3 - s1s2*s3,
                                        c1c2*s3 + s1s2*c3,
                                        s1*c2*c3 + c1*s2*s3,
                                        c1*s2*c3 - s1*c2*s3);

            return quat;
        }
Example #4
0
 void ClearCache(object o, EventArgs e)
 {
     // This should happen when the Updated handler fires
     quat        = null;
     transMatrix = null;
 }