public CameraTransform(Point3D position, Quaternion rotation) { DefaultPosition = new Point3D(position); DefaultRotation = new Quaternion(rotation); Position = new Point3D(position); Rotation = new Quaternion(rotation); }
public void Reset() { Position = new Point3D(DefaultPosition); Rotation = new Quaternion(DefaultRotation); }
public void Roll(double angle) { Rotation = GetRotateQuaternion(GetRollAxis(), angle) * Rotation; }
public void Pitch(double angle) { Rotation = GetRotateQuaternion(GetPitchAxis(), angle) * Rotation; }
public void Yaw(double angle) { Rotation = GetRotateQuaternion(GetYawAxis(), angle) * Rotation; }
private static Point3D Rotate(Quaternion rotation, Point3D point) { Quaternion result = rotation * (new Quaternion(0.0, point.X, point.Y, point.Z)) * rotation.GetConjugate(); return new Point3D(result.I, result.J, result.K); }