{
  "kind": "ideal_model_not_observation",
  "inputs": {
    "earth": [
      0,
      0
    ],
    "orbit_radius_unitless": 1,
    "sun_direction": [
      1,
      0
    ],
    "angles_deg": [
      0,
      90,
      180,
      270
    ],
    "north_view": "CCW in x-right/y-up; SVG y inverted",
    "synchronous_spin": "spin theta, initial near marker (-1,0)",
    "omitted": [
      "Earth annual motion in four snapshots",
      "libration",
      "orbit inclination",
      "eclipses",
      "terrain",
      "earthshine",
      "physical scale"
    ]
  },
  "method": "Rotated fixed near-surface vector compared to negative orbital radius at 73 positions; 2D cross and dot; no-spin counterexample; far-centre illumination dot (+x) compared to expected +1/0/-1/0. Renderer uses same saved coordinates.",
  "checks": [
    {
      "position_deg": 0,
      "facing_dot": 1.0,
      "cross": 0.0,
      "no_spin_facing_dot": 1.0
    },
    {
      "position_deg": 5,
      "facing_dot": 1.0,
      "cross": 0.0,
      "no_spin_facing_dot": 0.9961946980917455
    },
    {
      "position_deg": 10,
      "facing_dot": 1.0,
      "cross": 2.7755575615628914e-17,
      "no_spin_facing_dot": 0.984807753012208
    },
    {
      "position_deg": 15,
      "facing_dot": 1.0,
      "cross": 0.0,
      "no_spin_facing_dot": 0.9659258262890683
    },
    {
      "position_deg": 20,
      "facing_dot": 1.0,
      "cross": 0.0,
      "no_spin_facing_dot": 0.9396926207859084
    },
    {
      "position_deg": 25,
      "facing_dot": 1.0,
      "cross": 1.1102230246251565e-16,
      "no_spin_facing_dot": 0.9063077870366499
    },
    {
      "position_deg": 30,
      "facing_dot": 1.0000000000000002,
      "cross": 5.551115123125783e-17,
      "no_spin_facing_dot": 0.8660254037844387
    },
    {
      "position_deg": 35,
      "facing_dot": 1.0,
      "cross": 1.1102230246251565e-16,
      "no_spin_facing_dot": 0.8191520442889918
    },
    {
      "position_deg": 40,
      "facing_dot": 1.0,
      "cross": 1.6653345369377348e-16,
      "no_spin_facing_dot": 0.766044443118978
    },
    {
      "position_deg": 45,
      "facing_dot": 1.0,
      "cross": 1.1102230246251565e-16,
      "no_spin_facing_dot": 0.7071067811865476
    },
    {
      "position_deg": 50,
      "facing_dot": 1.0,
      "cross": 2.7755575615628914e-16,
      "no_spin_facing_dot": 0.6427876096865394
    },
    {
      "position_deg": 55,
      "facing_dot": 1.0,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": 0.573576436351046
    },
    {
      "position_deg": 60,
      "facing_dot": 1.0,
      "cross": 1.6653345369377348e-16,
      "no_spin_facing_dot": 0.5000000000000001
    },
    {
      "position_deg": 65,
      "facing_dot": 1.0,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": 0.42261826174069944
    },
    {
      "position_deg": 70,
      "facing_dot": 1.0,
      "cross": 2.220446049250313e-16,
      "no_spin_facing_dot": 0.3420201433256688
    },
    {
      "position_deg": 75,
      "facing_dot": 1.0000000000000002,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": 0.25881904510252074
    },
    {
      "position_deg": 80,
      "facing_dot": 1.0000000000000002,
      "cross": 2.7755575615628914e-16,
      "no_spin_facing_dot": 0.17364817766693041
    },
    {
      "position_deg": 85,
      "facing_dot": 1.0000000000000002,
      "cross": 3.885780586188048e-16,
      "no_spin_facing_dot": 0.08715574274765814
    },
    {
      "position_deg": 90,
      "facing_dot": 1.0000000000000002,
      "cross": 2.995901430458082e-16,
      "no_spin_facing_dot": 6.123233995736766e-17
    },
    {
      "position_deg": 95,
      "facing_dot": 1.0000000000000002,
      "cross": 4.440892098500626e-16,
      "no_spin_facing_dot": -0.08715574274765824
    },
    {
      "position_deg": 100,
      "facing_dot": 1.0000000000000002,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": -0.1736481776669303
    },
    {
      "position_deg": 105,
      "facing_dot": 1.0000000000000004,
      "cross": 4.440892098500626e-16,
      "no_spin_facing_dot": -0.25881904510252085
    },
    {
      "position_deg": 110,
      "facing_dot": 1.0000000000000002,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": -0.3420201433256687
    },
    {
      "position_deg": 115,
      "facing_dot": 1.0000000000000002,
      "cross": 2.220446049250313e-16,
      "no_spin_facing_dot": -0.42261826174069933
    },
    {
      "position_deg": 120,
      "facing_dot": 1.0000000000000002,
      "cross": 1.6653345369377348e-16,
      "no_spin_facing_dot": -0.49999999999999983
    },
    {
      "position_deg": 125,
      "facing_dot": 1.0000000000000002,
      "cross": 4.996003610813204e-16,
      "no_spin_facing_dot": -0.5735764363510462
    },
    {
      "position_deg": 130,
      "facing_dot": 1.0000000000000004,
      "cross": 4.440892098500626e-16,
      "no_spin_facing_dot": -0.6427876096865394
    },
    {
      "position_deg": 135,
      "facing_dot": 1.0000000000000004,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": -0.7071067811865475
    },
    {
      "position_deg": 140,
      "facing_dot": 1.0000000000000004,
      "cross": 2.7755575615628914e-16,
      "no_spin_facing_dot": -0.7660444431189779
    },
    {
      "position_deg": 145,
      "facing_dot": 1.0000000000000004,
      "cross": 6.106226635438361e-16,
      "no_spin_facing_dot": -0.8191520442889919
    },
    {
      "position_deg": 150,
      "facing_dot": 1.0000000000000004,
      "cross": 5.551115123125783e-16,
      "no_spin_facing_dot": -0.8660254037844387
    },
    {
      "position_deg": 155,
      "facing_dot": 1.0000000000000007,
      "cross": 3.885780586188048e-16,
      "no_spin_facing_dot": -0.9063077870366499
    },
    {
      "position_deg": 160,
      "facing_dot": 1.0000000000000004,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": -0.9396926207859083
    },
    {
      "position_deg": 165,
      "facing_dot": 1.0000000000000004,
      "cross": 2.220446049250313e-16,
      "no_spin_facing_dot": -0.9659258262890682
    },
    {
      "position_deg": 170,
      "facing_dot": 1.0000000000000004,
      "cross": 5.551115123125783e-16,
      "no_spin_facing_dot": -0.984807753012208
    },
    {
      "position_deg": 175,
      "facing_dot": 1.0000000000000004,
      "cross": 4.579669976578771e-16,
      "no_spin_facing_dot": -0.9961946980917455
    },
    {
      "position_deg": 180,
      "facing_dot": 1.0000000000000004,
      "cross": 3.6325789335877064e-16,
      "no_spin_facing_dot": -1.0
    },
    {
      "position_deg": 185,
      "facing_dot": 1.0000000000000004,
      "cross": 2.636779683484747e-16,
      "no_spin_facing_dot": -0.9961946980917455
    },
    {
      "position_deg": 190,
      "facing_dot": 1.0000000000000004,
      "cross": 6.38378239159465e-16,
      "no_spin_facing_dot": -0.984807753012208
    },
    {
      "position_deg": 195,
      "facing_dot": 1.0000000000000004,
      "cross": 4.996003610813204e-16,
      "no_spin_facing_dot": -0.9659258262890683
    },
    {
      "position_deg": 200,
      "facing_dot": 1.0000000000000004,
      "cross": 3.885780586188048e-16,
      "no_spin_facing_dot": -0.9396926207859084
    },
    {
      "position_deg": 205,
      "facing_dot": 1.0000000000000004,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": -0.90630778703665
    },
    {
      "position_deg": 210,
      "facing_dot": 1.0000000000000004,
      "cross": 6.106226635438361e-16,
      "no_spin_facing_dot": -0.8660254037844386
    },
    {
      "position_deg": 215,
      "facing_dot": 1.0000000000000004,
      "cross": 6.106226635438361e-16,
      "no_spin_facing_dot": -0.8191520442889918
    },
    {
      "position_deg": 220,
      "facing_dot": 1.0000000000000004,
      "cross": 4.996003610813204e-16,
      "no_spin_facing_dot": -0.766044443118978
    },
    {
      "position_deg": 225,
      "facing_dot": 1.0000000000000007,
      "cross": 4.440892098500626e-16,
      "no_spin_facing_dot": -0.7071067811865477
    },
    {
      "position_deg": 230,
      "facing_dot": 1.0000000000000007,
      "cross": 3.885780586188048e-16,
      "no_spin_facing_dot": -0.6427876096865395
    },
    {
      "position_deg": 235,
      "facing_dot": 1.0000000000000007,
      "cross": 2.220446049250313e-16,
      "no_spin_facing_dot": -0.5735764363510464
    },
    {
      "position_deg": 240,
      "facing_dot": 1.0000000000000007,
      "cross": 1.1102230246251565e-16,
      "no_spin_facing_dot": -0.5000000000000004
    },
    {
      "position_deg": 245,
      "facing_dot": 1.0000000000000007,
      "cross": 8.881784197001252e-16,
      "no_spin_facing_dot": -0.42261826174069916
    },
    {
      "position_deg": 250,
      "facing_dot": 1.0000000000000007,
      "cross": 8.326672684688674e-16,
      "no_spin_facing_dot": -0.34202014332566855
    },
    {
      "position_deg": 255,
      "facing_dot": 1.0000000000000007,
      "cross": 7.771561172376096e-16,
      "no_spin_facing_dot": -0.25881904510252063
    },
    {
      "position_deg": 260,
      "facing_dot": 1.0000000000000007,
      "cross": 6.938893903907228e-16,
      "no_spin_facing_dot": -0.17364817766693033
    },
    {
      "position_deg": 265,
      "facing_dot": 1.0000000000000007,
      "cross": 6.106226635438361e-16,
      "no_spin_facing_dot": -0.08715574274765825
    },
    {
      "position_deg": 270,
      "facing_dot": 1.0000000000000007,
      "cross": 5.101923705186197e-16,
      "no_spin_facing_dot": -1.8369701987210297e-16
    },
    {
      "position_deg": 275,
      "facing_dot": 1.0000000000000007,
      "cross": 4.3021142204224816e-16,
      "no_spin_facing_dot": 0.08715574274765789
    },
    {
      "position_deg": 280,
      "facing_dot": 1.0000000000000007,
      "cross": 3.3306690738754696e-16,
      "no_spin_facing_dot": 0.17364817766692997
    },
    {
      "position_deg": 285,
      "facing_dot": 1.0000000000000007,
      "cross": 2.498001805406602e-16,
      "no_spin_facing_dot": 0.2588190451025203
    },
    {
      "position_deg": 290,
      "facing_dot": 1.0000000000000009,
      "cross": 9.992007221626409e-16,
      "no_spin_facing_dot": 0.342020143325669
    },
    {
      "position_deg": 295,
      "facing_dot": 1.0000000000000009,
      "cross": 9.43689570931383e-16,
      "no_spin_facing_dot": 0.4226182617406996
    },
    {
      "position_deg": 300,
      "facing_dot": 1.0000000000000009,
      "cross": 8.881784197001252e-16,
      "no_spin_facing_dot": 0.5000000000000001
    },
    {
      "position_deg": 305,
      "facing_dot": 1.0000000000000009,
      "cross": 8.326672684688674e-16,
      "no_spin_facing_dot": 0.573576436351046
    },
    {
      "position_deg": 310,
      "facing_dot": 1.0000000000000009,
      "cross": 7.771561172376096e-16,
      "no_spin_facing_dot": 0.6427876096865393
    },
    {
      "position_deg": 315,
      "facing_dot": 1.0000000000000009,
      "cross": 7.771561172376096e-16,
      "no_spin_facing_dot": 0.7071067811865474
    },
    {
      "position_deg": 320,
      "facing_dot": 1.0000000000000009,
      "cross": 6.106226635438361e-16,
      "no_spin_facing_dot": 0.7660444431189778
    },
    {
      "position_deg": 325,
      "facing_dot": 1.0000000000000009,
      "cross": 5.551115123125783e-16,
      "no_spin_facing_dot": 0.8191520442889916
    },
    {
      "position_deg": 330,
      "facing_dot": 1.0000000000000009,
      "cross": 4.440892098500626e-16,
      "no_spin_facing_dot": 0.8660254037844384
    },
    {
      "position_deg": 335,
      "facing_dot": 1.0000000000000009,
      "cross": 1.1657341758564144e-15,
      "no_spin_facing_dot": 0.90630778703665
    },
    {
      "position_deg": 340,
      "facing_dot": 1.000000000000001,
      "cross": 1.0547118733938987e-15,
      "no_spin_facing_dot": 0.9396926207859084
    },
    {
      "position_deg": 345,
      "facing_dot": 1.000000000000001,
      "cross": 1.0547118733938987e-15,
      "no_spin_facing_dot": 0.9659258262890683
    },
    {
      "position_deg": 350,
      "facing_dot": 1.000000000000001,
      "cross": 9.159339953157541e-16,
      "no_spin_facing_dot": 0.984807753012208
    },
    {
      "position_deg": 355,
      "facing_dot": 1.000000000000001,
      "cross": 8.326672684688674e-16,
      "no_spin_facing_dot": 0.9961946980917455
    },
    {
      "position_deg": 360,
      "facing_dot": 1.000000000000001,
      "cross": 7.403935745253555e-16,
      "no_spin_facing_dot": 1.0
    }
  ],
  "panel_checks": [
    {
      "position_deg": 0,
      "phase": "삭",
      "moon_x": 1.0,
      "moon_y": 0.0,
      "near_x": -1.0,
      "near_y": -0.0,
      "far_x": 1.0,
      "far_y": 0.0,
      "near_to_earth_dot": 1.0,
      "far_sun_dot": 1.0,
      "spin_angle_deg": 0
    },
    {
      "position_deg": 90,
      "phase": "상현",
      "moon_x": 6.123233995736766e-17,
      "moon_y": 1.0,
      "near_x": -6.123233995736766e-17,
      "near_y": -1.0,
      "far_x": 6.123233995736766e-17,
      "far_y": 1.0,
      "near_to_earth_dot": 1.0,
      "far_sun_dot": 6.123233995736766e-17,
      "spin_angle_deg": 90
    },
    {
      "position_deg": 180,
      "phase": "보름",
      "moon_x": -1.0,
      "moon_y": 1.2246467991473532e-16,
      "near_x": 1.0,
      "near_y": -1.2246467991473532e-16,
      "far_x": -1.0,
      "far_y": 1.2246467991473532e-16,
      "near_to_earth_dot": 1.0,
      "far_sun_dot": -1.0,
      "spin_angle_deg": 180
    },
    {
      "position_deg": 270,
      "phase": "하현",
      "moon_x": -1.8369701987210297e-16,
      "moon_y": -1.0,
      "near_x": 1.8369701987210297e-16,
      "near_y": 1.0,
      "far_x": -1.8369701987210297e-16,
      "far_y": -1.0,
      "near_to_earth_dot": 1.0,
      "far_sun_dot": -1.8369701987210297e-16,
      "spin_angle_deg": 270
    }
  ],
  "no_spin_at_180_dot": -1,
  "tolerance": 1e-12,
  "all_pass": true,
  "limitations": "Plane unit-vector checks verify orientation, not observed lunar libration or brightness. Boundary dot=0 means terminator; no claim of measured light.",
  "comparison_v2": {
    "rows": [
      {
        "condition": "synchronous",
        "orbit_deg": 0,
        "spin_deg": 0,
        "near_surface_mark": "가",
        "ga_direction_x": -1,
        "to_earth_direction_x": -1,
        "ga_sun_dot": -1,
        "svg_moon_x": 205,
        "svg_ga_x": 162,
        "svg_earth_x": 55
      },
      {
        "condition": "synchronous",
        "orbit_deg": 180,
        "spin_deg": 180,
        "near_surface_mark": "가",
        "ga_direction_x": 1,
        "to_earth_direction_x": 1,
        "ga_sun_dot": 1,
        "svg_moon_x": 435,
        "svg_ga_x": 478,
        "svg_earth_x": 610
      },
      {
        "condition": "no_spin",
        "orbit_deg": 0,
        "spin_deg": 0,
        "near_surface_mark": "가",
        "ga_direction_x": -1,
        "to_earth_direction_x": -1,
        "ga_sun_dot": -1,
        "svg_moon_x": 205,
        "svg_ga_x": 162,
        "svg_earth_x": 55
      },
      {
        "condition": "no_spin",
        "orbit_deg": 180,
        "spin_deg": 0,
        "near_surface_mark": "나",
        "ga_direction_x": -1,
        "to_earth_direction_x": 1,
        "ga_sun_dot": -1,
        "svg_moon_x": 435,
        "svg_ga_x": 392,
        "svg_earth_x": 610
      }
    ],
    "all_pass": true,
    "renderer_marker_font_units": 40,
    "moon_radius_units": 86,
    "baseline": "mark ga is initial near side; counterfactual ga may become far side"
  }
}
