0

私は宇宙シミュレーションに取り組んでおり、昇順および降順の軌道ノードの位置を取得するのに苦労しています。軌道の任意の角度で位置を取得する方法は知っていますが、軌道を周回する物体の中心ではなく、軌道の中心から測定されます。

ここに私が達成しようとしていることを示す写真があります: ここに画像の説明を入力

中心から2つの軌道ノードまでの角度を取得するにはどうすればよいですか? これは私が今持っているコードです。ノードは正しい角度で返されますが、距離が正しくありません。

internal Vector3 AscendingNode()
{
    if (orbitalElements.IsHyperbolic())
    {
        return Vector3.zero; // No ascending or descending nodes in a hyperbolic orbit
    }

    var semiMajorAxis = (float)(orbitalElements.semiMajorAxis / Tudat.Instance.unitDivider);

    var semiMinorAxis = semiMajorAxis * Mathf.Sqrt((1 - ((float)orbitalElements.eccentricity * (float)orbitalElements.eccentricity)));
    var inclination = 360 - (float)orbitalElements.inclination * Mathf.Rad2Deg;
    var longitudeOfAscendingAngle = 360 - (float)orbitalElements.longitudeOfAscending * Mathf.Rad2Deg;

    var ascendingAngle = Quaternion.AngleAxis(longitudeOfAscendingAngle, Vector3.up);
    var inclinationAngle = Quaternion.AngleAxis(inclination, Vector3.right);

    var position = new Vector3(semiMajorAxis * Mathf.Cos(0), 0.0f, semiMinorAxis * Mathf.Sin(0));
    position = ascendingAngle * (inclinationAngle * (position)) + orbitingBody.GetPosition();

    return position;

}
4

0 に答える 0