{
  "all_pass": true,
  "kind": "invented_circular_orbit_projection_not_ephemeris",
  "inputs": {
    "inner_radius": 1,
    "outer_radius": 1.6,
    "inner_angular_speed": 1,
    "outer_angular_speed": 0.5,
    "time_unit": "arbitrary",
    "orientation": "north view, counterclockwise; SVG y inverted"
  },
  "checks": [
    {
      "t_unitless": -1.6,
      "inner_angle_rad": -1.6,
      "outer_angle_rad": -0.8,
      "inner_xy": [
        -0.029199522301288815,
        -0.9995736030415051
      ],
      "outer_xy": [
        1.1147307349554647,
        -1.1477697454392366
      ],
      "observer_to_outer_xy": [
        1.1439302572567536,
        -0.1481961423977315
      ],
      "apparent_angle_deg": -7.381554958668313,
      "angular_rate_rad_per_time": 0.45688560219756125
    },
    {
      "t_unitless": -0.4,
      "inner_angle_rad": -0.4,
      "outer_angle_rad": -0.2,
      "inner_xy": [
        0.9210609940028851,
        -0.3894183423086505
      ],
      "outer_xy": [
        1.5681065245459866,
        -0.317870929272098
      ],
      "observer_to_outer_xy": [
        0.6470455305431015,
        0.07154741303655254
      ],
      "apparent_angle_deg": 6.309878579606944,
      "angular_rate_rad_per_time": -0.17027373463096682
    },
    {
      "t_unitless": 0,
      "inner_angle_rad": 0,
      "outer_angle_rad": 0.0,
      "inner_xy": [
        1.0,
        0.0
      ],
      "outer_xy": [
        1.6,
        0.0
      ],
      "observer_to_outer_xy": [
        0.6000000000000001,
        0.0
      ],
      "apparent_angle_deg": 0.0,
      "angular_rate_rad_per_time": -0.3333333333333332
    },
    {
      "t_unitless": 0.4,
      "inner_angle_rad": 0.4,
      "outer_angle_rad": 0.2,
      "inner_xy": [
        0.9210609940028851,
        0.3894183423086505
      ],
      "outer_xy": [
        1.5681065245459866,
        0.317870929272098
      ],
      "observer_to_outer_xy": [
        0.6470455305431015,
        -0.07154741303655254
      ],
      "apparent_angle_deg": -6.309878579606944,
      "angular_rate_rad_per_time": -0.17027373463096682
    },
    {
      "t_unitless": 1.6,
      "inner_angle_rad": 1.6,
      "outer_angle_rad": 0.8,
      "inner_xy": [
        -0.029199522301288815,
        0.9995736030415051
      ],
      "outer_xy": [
        1.1147307349554647,
        1.1477697454392366
      ],
      "observer_to_outer_xy": [
        1.1439302572567536,
        0.1481961423977315
      ],
      "apparent_angle_deg": 7.381554958668313,
      "angular_rate_rad_per_time": 0.45688560219756125
    }
  ],
  "rate_checks": [
    {
      "t": -1.6,
      "analytic_rate": 0.45688560219756125,
      "central_difference_rate": 0.4568856021999745,
      "absolute_error": 2.4132362774764715e-12
    },
    {
      "t": -0.4,
      "analytic_rate": -0.17027373463096682,
      "central_difference_rate": -0.1702737346197247,
      "absolute_error": 1.1242118347354335e-11
    },
    {
      "t": 0,
      "analytic_rate": -0.3333333333333332,
      "central_difference_rate": -0.33333333329320974,
      "absolute_error": 4.012346010995316e-11
    },
    {
      "t": 0.4,
      "analytic_rate": -0.17027373463096682,
      "central_difference_rate": -0.1702737346197247,
      "absolute_error": 1.1242118347354335e-11
    },
    {
      "t": 1.6,
      "analytic_rate": 0.45688560219756125,
      "central_difference_rate": 0.4568856021999745,
      "absolute_error": 2.4132362774764715e-12
    }
  ],
  "independent_check": "analytical angular rate cross product vs central difference dt=1e-5, tolerance1e-8",
  "limits": [
    "coplanar circular model",
    "not real Earth/Mars dates/coordinates",
    "no sky altitude/brightness or accurate loop morphology"
  ]
}
