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); }
void ClearCache(object o, EventArgs e) { // This should happen when the Updated handler fires quat = null; transMatrix = null; }
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; }