public override void move(Vector3D oldP, Vector3D newP) { oldP.Normalize(); newP.Normalize(); double oldlat = Math.Asin(oldP.Y); // safe_asin(oldp.z); double oldlon = Math.Atan2(oldP.Z, oldP.X); // atan2(oldp.y, oldp.x); double lat = Math.Asin(newP.Y); double lon = Math.Atan2(newP.Y, newP.X); x0 -= lon - oldlon; y0 -= lat - oldlat; y0 = Math.Max(-Math.PI / 2.0, Math.Min(Math.PI / 2.0, y0)); }
public static Vector3D Normalize(Vector3D value) { value.Normalize(); return value; }
public static void Normalize(ref Vector3D value, out Vector3D result) { result = value; result.Normalize(); }