{
  "report": {
    "artifact": "05-projectile-sim-astra",
    "evaluated_at": "2026-10-17T10:33:43.889Z",
    "errors": [],
    "blocked_requests": [],
    "scene": {
      "meshes": 248,
      "vertices": 23906,
      "bounds": {
        "min": [
          -2.0349998474121094,
          -0.5750000003725291,
          -3.934999942779541
        ],
        "max": [
          14.03499984741211,
          2.6034199793146167,
          3.934999942779541
        ],
        "size": [
          16.06999969482422,
          3.1784199796871455,
          7.869999885559082
        ],
        "center": [
          6,
          1.014209989471044,
          0
        ]
      },
      "camera": [
        15.852156197764284,
        14.355004637349776,
        18.946454226469776
      ],
      "target": [
        6,
        0.7135575942915392,
        0
      ],
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "named": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "type": "Group",
          "position": [
            0,
            0,
            0
          ],
          "bounds": {
            "min": [
              -2.0349998474121094,
              -0.5750000003725291,
              -3.934999942779541
            ],
            "max": [
              14.03499984741211,
              2.6034199793146167,
              3.934999942779541
            ],
            "size": [
              16.06999969482422,
              3.1784199796871455,
              7.869999885559082
            ],
            "center": [
              6,
              1.014209989471044,
              0
            ]
          }
        },
        {
          "name": "Grassy measuring field with meter markings",
          "type": "Group",
          "position": [
            0,
            0,
            0
          ],
          "bounds": {
            "min": [
              -2.0349998474121094,
              -0.5750000003725291,
              -3.934999942779541
            ],
            "max": [
              14.03499984741211,
              0.0049999982118606595,
              3.934999942779541
            ],
            "size": [
              16.06999969482422,
              0.5799999985843898,
              7.869999885559082
            ],
            "center": [
              6,
              -0.2850000010803342,
              0
            ]
          }
        },
        {
          "name": "Static analytic trajectory",
          "type": "Group",
          "position": [
            0,
            0,
            0
          ],
          "bounds": {
            "min": [
              -0.01267855055630207,
              -0.01277710311114788,
              -0.054999999701976776
            ],
            "max": [
              10.206358909606934,
              2.6034199793146167,
              0.054999999701976776
            ],
            "size": [
              10.219037460163236,
              2.6161970824257645,
              0.10999999940395355
            ],
            "center": [
              5.096840179525316,
              1.2953214381017344,
              0
            ]
          }
        },
        {
          "name": "Launch pedestal at x 0",
          "type": "Group",
          "position": [
            0,
            0,
            0
          ],
          "bounds": {
            "min": [
              -0.6399999856948853,
              -0.18000000074505806,
              -0.6399999856948853
            ],
            "max": [
              0.6399999856948853,
              -0.07999999925494194,
              0.6399999856948853
            ],
            "size": [
              1.2799999713897705,
              0.10000000149011612,
              1.2799999713897705
            ],
            "center": [
              0,
              -0.13,
              0
            ]
          }
        },
        {
          "name": "Open basket centered at x 10 z 0",
          "type": "Group",
          "position": [
            10,
            0,
            0
          ],
          "bounds": {
            "min": [
              9.389999985694885,
              -0.15099999994039537,
              -0.6100000143051147
            ],
            "max": [
              10.610000014305115,
              0.6820000015199186,
              0.6100000143051147
            ],
            "size": [
              1.2200000286102295,
              0.8330000014603139,
              1.2200000286102295
            ],
            "center": [
              10,
              0.2655000007897616,
              0
            ]
          }
        }
      ]
    },
    "controls": [
      {
        "tag": "BUTTON",
        "id": "exportButton",
        "text": "Export GLB",
        "type": "submit",
        "value": ""
      },
      {
        "tag": "BUTTON",
        "id": "resetView",
        "text": "Reset view",
        "type": "submit",
        "value": ""
      },
      {
        "tag": "INPUT",
        "id": "speed",
        "text": "",
        "type": "range",
        "value": "10",
        "min": "2",
        "max": "20"
      },
      {
        "tag": "INPUT",
        "id": "angle",
        "text": "",
        "type": "range",
        "value": "45",
        "min": "5",
        "max": "85"
      },
      {
        "tag": "BUTTON",
        "id": "launchButton",
        "text": "Launch ball",
        "type": "submit",
        "value": ""
      },
      {
        "tag": "BUTTON",
        "id": "pauseButton",
        "text": "Pause",
        "type": "submit",
        "value": ""
      },
      {
        "tag": "BUTTON",
        "id": "resetButton",
        "text": "Reset",
        "type": "submit",
        "value": ""
      }
    ],
    "desktop_overflow": false,
    "orbit_changes_camera": true,
    "glb": {
      "bytes": 1252172,
      "magic": "glTF",
      "version": 2,
      "declared_length": 1252172,
      "meshes": 248,
      "nodes": 253,
      "cameras": 0,
      "lights": 0,
      "roundtrip": {
        "meshes": 248
      }
    },
    "physics_default": {
      "g": 9.81,
      "flightTime": 1.4416040391163047,
      "range": 10.19367991845056,
      "maxHeight": 2.54841997961264
    },
    "physics_changed": {
      "g": 9.81,
      "flightTime": 1.223241590214067,
      "range": 12.712299505092675,
      "maxHeight": 1.8348623853211004
    },
    "mobile_overflow": false
  },
  "physics": {
    "cases": [
      {
        "speed": 10,
        "angle": 45,
        "actual": {
          "g": 9.81,
          "flightTime": 1.4416040391163047,
          "range": 10.19367991845056,
          "maxHeight": 2.54841997961264
        },
        "expected": {
          "g": 9.81,
          "flightTime": 1.4416040391163047,
          "range": 10.19367991845056,
          "maxHeight": 2.5484199796126394
        },
        "maxAbsError": 4.440892098500626e-16
      },
      {
        "speed": 12,
        "angle": 30,
        "actual": {
          "g": 9.81,
          "flightTime": 1.223241590214067,
          "range": 12.712299505092675,
          "maxHeight": 1.8348623853211004
        },
        "expected": {
          "g": 9.81,
          "flightTime": 1.223241590214067,
          "range": 12.712299505092675,
          "maxHeight": 1.8348623853211004
        },
        "maxAbsError": 0
      },
      {
        "speed": 2,
        "angle": 5,
        "actual": {
          "g": 9.81,
          "flightTime": 0.03553750978497784,
          "range": 0.07080455766235691,
          "maxHeight": 0.001548649030355957
        },
        "expected": {
          "g": 9.81,
          "flightTime": 0.03553750978497784,
          "range": 0.07080455766235691,
          "maxHeight": 0.001548649030355957
        },
        "maxAbsError": 0
      },
      {
        "speed": 20,
        "angle": 85,
        "actual": {
          "g": 9.81,
          "flightTime": 4.061955955521898,
          "range": 7.08045576623569,
          "maxHeight": 20.232494933865524
        },
        "expected": {
          "g": 9.81,
          "flightTime": 4.061955955521898,
          "range": 7.080455766235688,
          "maxHeight": 20.232494933865524
        },
        "maxAbsError": 1.7763568394002505e-15
      }
    ],
    "before": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nLaunch ball\nPause\nReset\nReady when you are\n\nThe dotted markers trace equal time intervals.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    },
    "moving": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            1.7401897890058553,
            1.4431174337831751,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nIn flight\u2026\nPause\nReset\nFollow the flight\n\nGravity bends the path. Horizontal speed stays constant.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    },
    "paused": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            2.00606193856341,
            1.6112796289807017,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nResume flight\nPause\nReset\nPaused at 0.28 s\n\nTake a closer look. Resume to continue this flight.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    },
    "pausedLater": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            2.00606193856341,
            1.6112796289807017,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nResume flight\nPause\nReset\nPaused at 0.28 s\n\nTake a closer look. Resume to continue this flight.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    },
    "moves": true,
    "pauseStable": true,
    "landed": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            10.19367991845056,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nLaunch again\nPause\nReset\nA basket! Beautifully aimed.\n\nLanded at 10.19 m \u00b7 0.19 m from center.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    },
    "reset": {
      "physics": {
        "g": 9.81,
        "flightTime": 1.4416040391163047,
        "range": 10.19367991845056,
        "maxHeight": 2.54841997961264
      },
      "balls": [
        {
          "name": "Projectile Teaching Field \u2014 meters",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Analytic ballistic flight arc",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball resting point",
          "p": [
            0,
            -0.098,
            0
          ]
        },
        {
          "name": "Projectile ball",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 1",
          "p": [
            0,
            0,
            0
          ]
        },
        {
          "name": "Ball seam 2",
          "p": [
            0,
            0,
            0
          ]
        }
      ],
      "text": "fieldwork.\nAN INTERACTIVE PHYSICS STUDIO\nEXPERIMENT 01\n/\nPROJECTILE MOTION\nExport GLB\nA SMALL LESSON IN FLIGHT\nFind your perfect arc.\n\nSet the speed. Choose an angle. Aim for the basket.\n\nLive simulation\nMEASURING FIELD / METERS\nReset view\n01Launch pad\n02Basket \u00b7 10 m\nAPEX\nFlight path\nTarget\nDrag to orbit \u00b7 Scroll to zoom\nFlight time\n1.44s\nLaunch to landing\nMaximum height\n2.55m\nAbove launch level\nHorizontal range\n10.19m\nDistance along the field\nSet your launch\n01 / 01\n\nTwo variables. One graceful flight.\nExplore how each changes the outcome.\n\nLaunch speed\n10.0m/s\n2 m/s\n20 m/s\nElevation angle\n45\u00b0\n5\u00b0\n85\u00b0\nAim above the horizon.\n45\u00b0 gives the greatest range.\nLaunch ball\nPause\nReset\nReady when you are\n\nThe dotted markers trace equal time intervals.\n\nA basket, 10 meters away\n\nLand within 0.5 m of its center to score.\nLaunch and landing share y = 0.\n\ng = 9.81 m/s\u00b2\nNo air resistance\nIdeal model\nSmall experiments. Clearer understanding.\nx(t) = v\u2080 cos(\u03b8)t \u00a0 \u00b7 \u00a0 y(t) = v\u2080 sin(\u03b8)t \u2212 \u00bdgt\u00b2\n01 \u2014 THE BALLISTIC ARC"
    }
  }
}
