mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Fix initial velocity direction
This commit is contained in:
parent
f85c3ca825
commit
e20b8ff737
@ -88,11 +88,16 @@ namespace NewHorizons.Components.Orbital
|
|||||||
var x = r * Mathf.Cos(f);
|
var x = r * Mathf.Cos(f);
|
||||||
var y = r * Mathf.Sin(f);
|
var y = r * Mathf.Sin(f);
|
||||||
|
|
||||||
|
// Forgot to take the derivative of r as well with respect to f
|
||||||
|
var denominator = Mathf.Pow(eccentricity * Mathf.Cos(f) + 1, 2);
|
||||||
|
var dx = -p * Mathf.Sin(f) / denominator;
|
||||||
|
var dy = p * (eccentricity + Mathf.Cos(f)) / denominator;
|
||||||
|
|
||||||
var dir = Rotate(new Vector3(x, 0f, y).normalized, longitudeOfAscendingNode, inclination, argumentOfPeriapsis);
|
var dir = Rotate(new Vector3(x, 0f, y).normalized, longitudeOfAscendingNode, inclination, argumentOfPeriapsis);
|
||||||
var up = Rotate(Vector3.up, longitudeOfAscendingNode, inclination, argumentOfPeriapsis);
|
var velocityDir = Rotate(new Vector3(dx, 0f, dy).normalized, longitudeOfAscendingNode, inclination, argumentOfPeriapsis);
|
||||||
|
|
||||||
var pos = r * dir;
|
var pos = r * dir;
|
||||||
var vel = v * Vector3.Cross(dir, up).normalized;
|
var vel = v * velocityDir;
|
||||||
|
|
||||||
orbitalParameters.InitialPosition = pos;
|
orbitalParameters.InitialPosition = pos;
|
||||||
orbitalParameters.InitialVelocity = vel;
|
orbitalParameters.InitialVelocity = vel;
|
||||||
|
|||||||
@ -521,9 +521,9 @@ namespace NewHorizons.Handlers
|
|||||||
var primaryGravity = new Gravity(primaryBody.GetGravityVolume());
|
var primaryGravity = new Gravity(primaryBody.GetGravityVolume());
|
||||||
var secondaryGravity = new Gravity(secondaryBody.GetGravityVolume());
|
var secondaryGravity = new Gravity(secondaryBody.GetGravityVolume());
|
||||||
|
|
||||||
var relativePosition = body.Config.Orbit.GetOrbitalParameters(primaryGravity, secondaryGravity).InitialPosition;
|
var orbit = body.Config.Orbit;
|
||||||
|
|
||||||
go.transform.position = relativePosition + primaryBody.transform.position;
|
go.transform.position = orbit.GetOrbitalParameters(primaryGravity, secondaryGravity).InitialPosition + primaryBody.transform.position;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user