using System.Collections.Generic;
public static class OrbitConfigurations
const float DEFAULT_TOL = 1e-10f;
const float DEFAULT_SCALE = 1f;
/// All orbit configs, keyed by OrbitType, initialized once.
private static readonly IReadOnlyDictionary<OrbitType, OrbitConfig> _configs
= new Dictionary<OrbitType, OrbitConfig>
[OrbitType.Eight] = new OrbitConfig {
-1f,0f,0f, 0.347111f,0.532728f,0f,
1f,0f,0f, 0.347111f,0.532728f,0f,
0f,0f,0f, -0.694222f,-1.065456f,0f
[OrbitType.Moth1] = new OrbitConfig {
-1f,0f,0f, 0.464445f,0.39606f,0f,
1f,0f,0f, 0.464445f,0.39606f,0f,
0f,0f,0f, -0.92889f,-0.79212f,0f
[OrbitType.Moth2] = new OrbitConfig {
-1f,0f,0f, 0.282699f,0.327209f,0f,
1f,0f,0f, 0.282699f,0.327209f,0f,
0f,0f,0f, -0.565398f,-0.654418f,0f
[OrbitType.Moth3] = new OrbitConfig {
-1f,0f,0f, 0.383444f,0.377364f,0f,
1f,0f,0f, 0.383444f,0.377364f,0f,
0f,0f,0f, -0.766888f,-0.754728f,0f
[OrbitType.Dragonfly] = new OrbitConfig {
-1f,0f,0f, 0.080584f,0.588836f,0f,
1f,0f,0f, 0.080584f,0.588836f,0f,
0f,0f,0f, -0.161168f,-1.177672f,0f
[OrbitType.YinYang1a] = new OrbitConfig {
-1f,0f,0f, 0.513938f,0.304736f,0f,
1f,0f,0f, 0.513938f,0.304736f,0f,
0f,0f,0f, -1.027876f,-0.609472f,0f
[OrbitType.YinYang1b] = new OrbitConfig {
-1f,0f,0f, 0.282699f,0.327209f,0f,
1f,0f,0f, 0.282699f,0.327209f,0f,
0f,0f,0f, -0.565398f,-0.654418f,0f
[OrbitType.YinYang2a] = new OrbitConfig {
-1f,0f,0f, 0.416822f,0.330333f,0f,
1f,0f,0f, 0.416822f,0.330333f,0f,
0f,0f,0f, -0.833644f,-0.660666f,0f
[OrbitType.YinYang2b] = new OrbitConfig {
-1f,0f,0f, 0.417343f,0.3131f,0f,
1f,0f,0f, 0.417343f,0.3131f,0f,
0f,0f,0f, -0.834686f,-0.6262f,0f
tMax = 0f, // (missing in JS; fill in if known)
[OrbitType.Butterfly1] = new OrbitConfig {
-1f,0f,0f, 0.306893f,0.125507f,0f,
1f,0f,0f, 0.306893f,0.125507f,0f,
0f,0f,0f, -0.613786f,-0.251014f,0f
[OrbitType.Butterfly2] = new OrbitConfig {
-1f,0f,0f, 0.392955f,0.097579f,0f,
1f,0f,0f, 0.392955f,0.097579f,0f,
0f,0f,0f, -0.78591f,-0.195158f,0f
[OrbitType.Butterfly3] = new OrbitConfig {
-1f,0f,0f, 0.405916f,0.230163f,0f,
1f,0f,0f, 0.405916f,0.230163f,0f,
0f,0f,0f, -0.811832f,-0.460326f,0f
[OrbitType.Goggles] = new OrbitConfig {
-1f,0f,0f, 0.0833f,0.127889f,0f,
1f,0f,0f, 0.0833f,0.127889f,0f,
0f,0f,0f, -0.1666f,-0.255778f,0f
#region “VI” & “β” Orbits
[OrbitType.VI2_A] = new OrbitConfig {
-1f,0f,0f, 0.464445f,0.39606f,0f,
1f,0f,0f, 0.464445f,0.39606f,0f,
0f,0f,0f, -0.92889f,-0.79212f,0f
[OrbitType.VI4_A] = new OrbitConfig {
-1f,0f,0f, 0.462608f,0.397137f,0f,
1f,0f,0f, 0.462608f,0.397137f,0f,
0f,0f,0f, -0.925216f,-0.794274f,0f
[OrbitType.VI14_A] = new OrbitConfig {
-1f,0f,0f, 0.394501f,0.428999f,0f,
1f,0f,0f, 0.394501f,0.428999f,0f,
0f,0f,0f, -0.789002f,-0.857998f,0f
[OrbitType.III21S_Beta] = new OrbitConfig {
-1f,0f,0f, 0.418259f,0.299482f,0f,
1f,0f,0f, 0.418259f,0.299482f,0f,
0f,0f,0f, -0.836518f,-0.598964f,0f
[OrbitType.II15_A] = new OrbitConfig {
-1f,0f,0f, 0.049051f,0.590194f,0f,
1f,0f,0f, 0.049051f,0.590194f,0f,
0f,0f,0f, -0.098102f,-1.180388f,0f
[OrbitType.VIIb13_A] = new OrbitConfig {
-1f,0f,0f, 0.41388f,0.347796f,0f,
1f,0f,0f, 0.41388f,0.347796f,0f,
0f,0f,0f, -0.82776f,-0.695592f,0f
[OrbitType.VIIb17_A] = new OrbitConfig {
-1f,0f,0f, 0.416066f,0.29715f,0f,
1f,0f,0f, 0.416066f,0.29715f,0f,
0f,0f,0f, -0.832132f,-0.5943f,0f
[OrbitType.VIIb18_A] = new OrbitConfig {
-1f,0f,0f, 0.396743f,0.370881f,0f,
1f,0f,0f, 0.396743f,0.370881f,0f,
0f,0f,0f, -0.793486f,-0.741762f,0f
[OrbitType.VIIb20_A] = new OrbitConfig {
-1f,0f,0f, 0.415757f,0.29819f,0f,
1f,0f,0f, 0.415757f,0.29819f,0f,
0f,0f,0f, -0.831514f,-0.59638f,0f
[OrbitType.BrouckeA1] = new OrbitConfig {
-0.9892620043f,0f,0f, 0f,1.9169244185f,0f,
2.2096177241f,0f,0f, 0f,0.1910268738f,0f,
-1.2203557197f,0f,0f, 0f,-2.1079512924f,0f
[OrbitType.BrouckeA2] = new OrbitConfig {
0.336130095f,0f,0f, 0f,1.532431537f,0f,
0.7699893804f,0f,0f, 0f,-0.6287350978f,0f,
-1.1061194753f,0f,0f, 0f,-0.9036964391f,0f
[OrbitType.BrouckeA3] = new OrbitConfig {
0.3149337497f,0f,0f, 0f,1.4601869417f,0f,
0.812382071f,0f,0f, 0f,-0.5628292375f,0f,
-1.1273158206f,0f,0f, 0f,-0.8973577042f,0f
[OrbitType.BrouckeA4] = new OrbitConfig {
0.2843198916f,0f,0f, 0f,1.377417957f,0f,
0.8736097872f,0f,0f, 0f,-0.4884226932f,0f,
-1.1579296788f,0f,0f, 0f,-0.8889952638f,0f
[OrbitType.BrouckeA5] = new OrbitConfig {
0.2355245585f,0f,0f, 0f,1.2795329643f,0f,
0.9712004534f,0f,0f, 0f,-0.4021329019f,0f,
-1.2067250118f,0f,0f, 0f,-0.8774000623f,0f
[OrbitType.BrouckeA6] = new OrbitConfig {
0.1432778606f,0f,0f, 0f,1.1577475241f,0f,
1.1556938491f,0f,0f, 0f,-0.2974667752f,0f,
-1.2989717097f,0f,0f, 0f,-0.8602807489f,0f
[OrbitType.BrouckeA7] = new OrbitConfig {
-0.1095519101f,0f,0f, 0f,0.9913358338f,0f,
1.6613533905f,0f,0f, 0f,-0.1569959746f,0f,
-1.5518014804f,0f,0f, 0f,-0.8343398592f,0f
[OrbitType.BrouckeA8] = new OrbitConfig {
0.1979259967f,0f,0f, 0f,1.2224733132f,0f,
1.0463975768f,0f,0f, 0f,-0.3527351133f,0f,
-1.2443235736f,0f,0f, 0f,-0.8697381999f,0f
[OrbitType.BrouckeA9] = new OrbitConfig {
0.0557080334f,0f,0f, 0f,1.0824099428f,0f,
1.3308335036f,0f,0f, 0f,-0.2339059386f,0f,
-1.386541537f,0f,0f, 0f,-0.8485040042f,0f
[OrbitType.BrouckeA10] = new OrbitConfig {
-0.5426216182f,0f,0f, 0f,0.8750200467f,0f,
2.5274928067f,0f,0f, 0f,-0.0526955841f,0f,
-1.9848711885f,0f,0f, 0f,-0.8223244626f,0f
[OrbitType.BrouckeA11] = new OrbitConfig {
0.0132604844f,0f,0f, 0f,1.054151921f,0f,
1.4157286016f,0f,0f, 0f,-0.2101466639f,0f,
-1.4289890859f,0f,0f, 0f,-0.8440052572f,0f
[OrbitType.BrouckeA12] = new OrbitConfig {
-0.337076702f,0f,0f, 0f,0.9174260238f,0f,
2.1164029743f,0f,0f, 0f,-0.0922665014f,0f,
-1.7793262723f,0f,0f, 0f,-0.8251595224f,0f
[OrbitType.BrouckeA13] = new OrbitConfig {
-0.8965015243f,0f,0f, 0f,0.8285556923f,0f,
3.2352526189f,0f,0f, 0f,-0.0056478094f,0f,
-2.3387510946f,0f,0f, 0f,-0.8229078829f,0f
[OrbitType.BrouckeA14] = new OrbitConfig {
-0.2637815221f,0f,0f, 0f,0.9371630895f,0f,
1.9698126146f,0f,0f, 0f,-0.1099503287f,0f,
-1.7060310924f,0f,0f, 0f,-0.8272127608f,0f
[OrbitType.BrouckeA15] = new OrbitConfig {
-1.1889693067f,0f,0f, 0f,0.8042120498f,0f,
3.8201881837f,0f,0f, 0f,0.0212794833f,0f,
-2.631218877f,0f,0f, 0f,-0.8254915331f,0f
[OrbitType.BrouckeA16] = new OrbitConfig {
-0.7283341038f,0f,0f, 0f,0.8475982451f,0f,
2.8989177778f,0f,0f, 0f,-0.0255162097f,0f,
-2.1705836741f,0f,0f, 0f,-0.8220820354f,0f
[OrbitType.BrouckeR1] = new OrbitConfig {
0.808310623f,0f,0f, 0f,0.9901979166f,0f,
-0.4954148566f,0f,0f, 0f,-2.7171431768f,0f,
-0.3128957664f,0f,0f, 0f,1.7269452602f,0f
[OrbitType.BrouckeR2] = new OrbitConfig {
0.9060893715f,0f,0f, 0f,0.9658548899f,0f,
-0.6909723536f,0f,0f, 0f,-1.6223214842f,0f,
-0.2151170179f,0f,0f, 0f,0.6564665942f,0f
[OrbitType.BrouckeR3] = new OrbitConfig {
0.8920281421f,0f,0f, 0f,0.9957939373f,0f,
-0.6628498947f,0f,0f, 0f,-1.6191613336f,0f,
-0.2291782474f,0f,0f, 0f,0.6233673964f,0f
[OrbitType.BrouckeR4] = new OrbitConfig {
0.8733047091f,0f,0f, 0f,1.0107764436f,0f,
-0.6254030288f,0f,0f, 0f,-1.6833533458f,0f,
-0.2479016803f,0f,0f, 0f,0.6725769022f,0f
[OrbitType.BrouckeR5] = new OrbitConfig {
0.8584630769f,0f,0f, 0f,1.0204773541f,0f,
-0.5957197644f,0f,0f, 0f,-1.753556644f,0f,
-0.2627433125f,0f,0f, 0f,0.7330792899f,0f
[OrbitType.BrouckeR6] = new OrbitConfig {
0.8469642946f,0f,0f, 0f,1.0275065708f,0f,
-0.5727221998f,0f,0f, 0f,-1.8209307202f,0f,
-0.2742420948f,0f,0f, 0f,0.7934241494f,0f
[OrbitType.BrouckeR7] = new OrbitConfig {
0.8378824453f,0f,0f, 0f,1.0329242005f,0f,
-0.5545585011f,0f,0f, 0f,-1.8840083393f,0f,
-0.2833239442f,0f,0f, 0f,0.8510841387f,0f
[OrbitType.BrouckeR8] = new OrbitConfig {
0.8871256555f,0f,0f, 0f,0.9374933545f,0f,
-0.6530449215f,0f,0f, 0f,-1.7866975426f,0f,
-0.234080734f,0f,0f, 0f,0.849204188f,0f
[OrbitType.BrouckeR9] = new OrbitConfig {
0.901558607f,0f,0f, 0f,0.9840575737f,0f,
-0.6819108246f,0f,0f, 0f,-1.6015183264f,0f,
-0.2196477824f,0f,0f, 0f,0.6174607527f,0f
[OrbitType.BrouckeR10] = new OrbitConfig {
0.8822391241f,0f,0f, 0f,1.0042424155f,0f,
-0.6432718586f,0f,0f, 0f,-1.6491842814f,0f,
-0.2389672654f,0f,0f, 0f,0.6449418659f,0f
[OrbitType.BrouckeR11] = new OrbitConfig {
0.898348747f,0f,0f, 0f,0.9475564971f,0f,
-0.6754911045f,0f,0f, 0f,-1.7005860354f,0f,
-0.2228576425f,0f,0f, 0f,0.7530295383f,0f
[OrbitType.BrouckeR12] = new OrbitConfig {
0.9040866398f,0f,0f, 0f,0.9789534005f,0f,
-0.6869668901f,0f,0f, 0f,-1.6017790202f,0f,
-0.2171197497f,0f,0f, 0f,0.6228256196f,0f
[OrbitType.BrouckeR13] = new OrbitConfig {
0.9017748598f,0f,0f, 0f,0.9526089117f,0f,
-0.6823433302f,0f,0f, 0f,-1.6721104565f,0f,
-0.2194315296f,0f,0f, 0f,0.7195015448f,0f
[OrbitType.Henon2] = new OrbitConfig {
-1.0207041786f,0f,0f, 0f,9.126569314f,0f,
2.0532718983f,0f,0f, 0f,0.0660238922f,0f,
-1.0325677197f,0f,0f, 0f,-9.1925932061f,0f
[OrbitType.Henon3] = new OrbitConfig {
-0.973830058f,0f,0f, 0f,4.3072892019f,0f,
1.9988948637f,0f,0f, 0f,0.133382168f,0f,
-1.0250648057f,0f,0f, 0f,-4.4406713699f,0f
[OrbitType.Henon4] = new OrbitConfig {
-0.9418961718f,0f,0f, 0f,3.4407426089f,0f,
1.9620504351f,0f,0f, 0f,0.1608086204f,0f,
-1.0201542632f,0f,0f, 0f,-3.6015512293f,0f
[OrbitType.Henon5] = new OrbitConfig {
-0.9353825545f,0f,0f, 0f,3.3166932522f,0f,
1.9545571553f,0f,0f, 0f,0.1654488998f,0f,
-1.0191746008f,0f,0f, 0f,-3.482142152f,0f
[OrbitType.Henon42] = new OrbitConfig {
1.1593879407f,0f,0f, 0f,1.1787714143f,0f,
1.7740754142f,0f,0f, 0f,-0.6271771385f,0f,
-2.9334633549f,0f,0f, 0f,-0.5515942758f,0f
/// Fetches the pre-allocated config for the chosen orbit.
public static OrbitConfig Get(OrbitType type)
if (_configs.TryGetValue(type, out var cfg))
UnityEngine.Debug.LogError($"OrbitConfigurations: No data for {type}");