Fix longitude of ascending node (orbits and rings)

This commit is contained in:
Nick 2022-05-13 19:47:19 -04:00
parent b0e93ab8e9
commit b1e66f14fb
2 changed files with 5 additions and 4 deletions

View File

@ -42,7 +42,7 @@ namespace NewHorizons.Builder.Body
ringGO.transform.position = planetGO.transform.position; ringGO.transform.position = planetGO.transform.position;
ringGO.transform.rotation = planetGO.transform.rotation; ringGO.transform.rotation = planetGO.transform.rotation;
ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.up), ring.LongitudeOfAscendingNode); ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.up), ring.LongitudeOfAscendingNode);
ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.right), ring.Inclination); ringGO.transform.Rotate(ringGO.transform.TransformDirection(Vector3.left), ring.Inclination);
var ringMF = ringGO.AddComponent<MeshFilter>(); var ringMF = ringGO.AddComponent<MeshFilter>();
var ringMesh = ringMF.mesh; var ringMesh = ringMF.mesh;

View File

@ -107,10 +107,11 @@ namespace NewHorizons.Components.Orbital
public static Vector3 Rotate(Vector3 vector, float longitudeOfAscendingNode, float inclination, float argumentOfPeriapsis) public static Vector3 Rotate(Vector3 vector, float longitudeOfAscendingNode, float inclination, float argumentOfPeriapsis)
{ {
var R1 = Quaternion.AngleAxis(longitudeOfAscendingNode + argumentOfPeriapsis, Vector3.up); var R1 = Quaternion.AngleAxis(longitudeOfAscendingNode, Vector3.up);
var R2 = Quaternion.AngleAxis(inclination, R1 * Vector3.left); var R2 = Quaternion.AngleAxis(argumentOfPeriapsis, Vector3.up);
var R3 = Quaternion.AngleAxis(inclination, R1 * Vector3.left);
return R1 * R2 * vector; return R3 * R2 * R1 * vector;
} }
public OrbitalParameters GetOrbitalParameters(Gravity primaryGravity, Gravity secondaryGravity) public OrbitalParameters GetOrbitalParameters(Gravity primaryGravity, Gravity secondaryGravity)