{
  "schema": "physics-anim-scene",
  "version": 1,
  "annotations": {
    "version": 2,
    "strokes": []
  },
  "physicsEnvironment": {
    "schema": "physics-anim-environment",
    "version": 1,
    "constants": {
      "pixelsPerMeter": 80,
      "gravityAcceleration": 9.8,
      "coulombK": 8987551792.3
    }
  },
  "pixelsPerMeter": 80,
  "gravityAcceleration": 9.8,
  "coulombK": 8987551792.3,
  "timeScale": 0.5,
  "view": {
    "x": 273.3904959613732,
    "y": 3.4817508738902347,
    "scale": 0.8018297111323618
  },
  "canvasBackground": {
    "mode": "coordinate",
    "origin": {
      "x": 0,
      "y": 0
    }
  },
  "entities": [
    {
      "id": 90,
      "type": "RichTextEditor",
      "state": {
        "pos": {
          "x": 360,
          "y": 65
        },
        "width": 660,
        "height": 100,
        "text": "## 一维碰撞 · 动量与能量\n蓝球 0.20 kg，初速 +2.00 m/s；橙球 0.30 kg，初始静止。",
        "imageDataUrl": "",
        "imageName": "",
        "imageFit": "contain",
        "imagePosition": "top",
        "imageHeight": 92,
        "backgroundColor": "#ffffff",
        "backgroundOpacity": 0.96,
        "textColor": "#163047",
        "fontSize": 16,
        "fontWeight": 400,
        "fontFamily": "sans-serif",
        "textAlign": "left",
        "lineHeight": 1.45,
        "padding": 18,
        "borderColor": "#cbd5e1",
        "borderWidth": 1,
        "cornerRadius": 10,
        "showBorder": true,
        "locked": true
      }
    },
    {
      "id": 3,
      "type": "MechanicsHorizontalTabletop",
      "state": {
        "pos": {
          "x": 380,
          "y": 330
        },
        "width": 690,
        "height": 200,
        "friction": 0,
        "frictionMode": "simple",
        "frictionBindings": [],
        "rollingFriction": 0,
        "enabled": true,
        "color": "#f1f5f9",
        "borderColor": "#94a3b8",
        "locked": true
      }
    },
    {
      "id": 1,
      "type": "MechanicsBall",
      "state": {
        "pos": {
          "x": 210,
          "y": 330
        },
        "vel": {
          "x": 160,
          "y": 0
        },
        "angle": 0,
        "omega": 0,
        "radius": 18,
        "mass": 0.2,
        "densitySettingEnabled": false,
        "contactYoungModulusPa": 2000000000,
        "contactPoissonRatio": 0.35,
        "fluidInteractionEnabled": true,
        "fluidManualCalibrationEnabled": false,
        "fluidVolumeModel": "sphere",
        "fluidEffectiveDepthM": 0,
        "fluidVolumeM3": 0,
        "fluidReferenceAreaM2": 0,
        "fluidDragCoefficient": -1,
        "fluidLinearDragCoefficientNsM": -1,
        "useGravity": false,
        "elasticityCoefficient": 1,
        "friction": 0,
        "frictionMode": "simple",
        "frictionBindings": [],
        "color": "#2563eb",
        "strokeColor": "#0284c7",
        "showDirectionMarker": false,
        "directionMarkerColor": "rgba(255, 255, 255, 0.9)",
        "showForces": false,
        "forceDisplayAtCoM": false,
        "showVelocityVector": true,
        "showAccelerationVector": false,
        "showTrail": false,
        "maxTrail": 100,
        "trailUnlimited": false,
        "isPointMass": false,
        "locked": false
      }
    },
    {
      "id": 2,
      "type": "MechanicsBall",
      "state": {
        "pos": {
          "x": 410,
          "y": 330
        },
        "vel": {
          "x": 0,
          "y": 0
        },
        "angle": 0,
        "omega": 0,
        "radius": 18,
        "mass": 0.3,
        "densitySettingEnabled": false,
        "contactYoungModulusPa": 2000000000,
        "contactPoissonRatio": 0.35,
        "fluidInteractionEnabled": true,
        "fluidManualCalibrationEnabled": false,
        "fluidVolumeModel": "sphere",
        "fluidEffectiveDepthM": 0,
        "fluidVolumeM3": 0,
        "fluidReferenceAreaM2": 0,
        "fluidDragCoefficient": -1,
        "fluidLinearDragCoefficientNsM": -1,
        "useGravity": false,
        "elasticityCoefficient": 1,
        "friction": 0,
        "frictionMode": "simple",
        "frictionBindings": [],
        "color": "#d97706",
        "strokeColor": "#0284c7",
        "showDirectionMarker": false,
        "directionMarkerColor": "rgba(255, 255, 255, 0.9)",
        "showForces": false,
        "forceDisplayAtCoM": false,
        "showVelocityVector": true,
        "showAccelerationVector": false,
        "showTrail": false,
        "maxTrail": 100,
        "trailUnlimited": false,
        "isPointMass": false,
        "locked": false
      }
    },
    {
      "id": 4,
      "type": "Ruler",
      "state": {
        "pos": {
          "x": 380,
          "y": 485
        },
        "length": 600,
        "thickness": 24,
        "angleDeg": 0,
        "unit": "m",
        "minorStep": 0.5,
        "majorEvery": 2,
        "showTicks": true,
        "showNumbers": true,
        "showMeasure": true,
        "showEntityMarkers": false,
        "entityMarkersSelectedOnly": false,
        "commonGraduation": false,
        "fillColor": "#f8fafc",
        "strokeColor": "#64748b",
        "opacity": 1,
        "locked": true
      }
    },
    {
      "id": 5,
      "type": "Stopwatch",
      "state": {
        "pos": {
          "x": 620,
          "y": 180
        },
        "width": 148,
        "height": 84,
        "displayStyle": "digital",
        "enabled": false,
        "controlMode": "main",
        "timeScale": 1,
        "precisionSec": 0.01,
        "zeroSimTime": 0,
        "heldSec": 0,
        "showDial": false,
        "faceColor": "#f8f9fa",
        "caseColor": "#343a40",
        "accentColor": "#0d6efd",
        "lcdColor": "#e8f7ef",
        "locked": true
      }
    },
    {
      "id": 91,
      "type": "RichTextEditor",
      "state": {
        "pos": {
          "x": 962.5,
          "y": 162.71106807093733
        },
        "width": 425,
        "height": 275.42213614187466,
        "text": "### 动量与动能分别核验\n水平方向向右为正。\n\n1. 约 0.8 s 暂停，记录碰前速度。\n2. 继续到约 1.5 s，记录碰后速度。\n3. 比较 p = m₁v₁ + m₂v₂。\n4. 比较 Eₖ = ½m₁v₁² + ½m₂v₂²。\n\n基准：两球恢复系数均为 1。\n重置后仅把橙球恢复系数改为 0.50，重复测量。",
        "imageDataUrl": "",
        "imageName": "",
        "imageFit": "contain",
        "imagePosition": "top",
        "imageHeight": 92,
        "backgroundColor": "#ffffff",
        "backgroundOpacity": 0.96,
        "textColor": "#163047",
        "fontSize": 16,
        "fontWeight": 400,
        "fontFamily": "sans-serif",
        "textAlign": "left",
        "lineHeight": 1.45,
        "padding": 18,
        "borderColor": "#cbd5e1",
        "borderWidth": 1,
        "cornerRadius": 10,
        "showBorder": true,
        "locked": true
      }
    },
    {
      "id": 6,
      "type": "ObservationVariables",
      "state": {
        "pos": {
          "x": 965,
          "y": 438.5293977926969
        },
        "width": 420,
        "height": 252,
        "title": "两球系统实时测量",
        "accentColor": "#0f766e",
        "fontSize": 13,
        "compactMode": false,
        "locked": true,
        "editIndex": 0,
        "insertSourceId": "",
        "insertMode": "",
        "definitions": [
          {
            "id": "reading_blue",
            "name": "blue",
            "label": "蓝球 vₓ / (m/s)",
            "expression": "ref_1_ball_vx",
            "visible": true
          },
          {
            "id": "reading_amber",
            "name": "amber",
            "label": "橙球 vₓ / (m/s)",
            "expression": "ref_2_ball_vx",
            "visible": true
          },
          {
            "id": "reading_momentum",
            "name": "momentum",
            "label": "总动量 p / (kg·m/s)",
            "expression": "ref_1_basic_mass * ref_1_ball_vx + ref_2_basic_mass * ref_2_ball_vx",
            "visible": true
          },
          {
            "id": "reading_energy",
            "name": "energy",
            "label": "总动能 Eₖ / J",
            "expression": "ref_1_ball_ke + ref_2_ball_ke",
            "visible": true
          }
        ]
      }
    },
    {
      "id": 7,
      "type": "CoordinateSystem",
      "state": {
        "pos": {
          "x": 360,
          "y": 730
        },
        "width": 640,
        "height": 235,
        "enabled": true,
        "targetEntityIdX": "",
        "targetEntityIdY": "1",
        "targetEntityId": "",
        "xMode": "time",
        "yMode": "ball_vx",
        "ySeries": [
          {
            "enabled": true,
            "targetEntityId": "1",
            "yMode": "ball_vx",
            "color": "#2563eb"
          },
          {
            "enabled": true,
            "targetEntityId": "2",
            "yMode": "ball_vx",
            "color": "#d97706"
          }
        ],
        "projAxisDeg": 0,
        "unwrapAngle": true,
        "timeWindowSec": 3,
        "sampleStepSec": 0.008333333333333333,
        "maxPoints": 3600,
        "autoY": true,
        "yMin": -1,
        "yMax": 1,
        "xLabel": "t / s",
        "yLabel": "vₓ / (m/s)",
        "showExtremaX": false,
        "showExtremaY": false,
        "showIntercepts": false,
        "dataSeries": [
          [],
          []
        ],
        "data": []
      }
    },
    {
      "id": 99,
      "type": "VariableController",
      "state": {
        "pos": {
          "x": 962.5,
          "y": 640.6824587356317
        },
        "width": 425,
        "height": 132,
        "title": "变量控制器",
        "targetEntityId": "1",
        "propertyKey": "key:mass",
        "propertyLabel": "质量 m (kg)",
        "propertyIndex": 5,
        "controlMode": "discrete",
        "rangeMode": "custom",
        "minValue": 0.1,
        "maxValue": 1,
        "sliderStep": 0.1,
        "commitWhileRunning": false,
        "runtimeSmoothingEnabled": true,
        "runtimeMaxRate": 12,
        "runtimeTransitionMode": "smooth",
        "runtimeTransitionDuration": 0.1,
        "showTicks": true,
        "compactMode": false,
        "accentColor": "#0b7285",
        "locked": false
      }
    },
    {
      "id": 100,
      "type": "VariableController",
      "state": {
        "pos": {
          "x": 962.5,
          "y": 781.5
        },
        "width": 425,
        "height": 132,
        "title": "变量控制器",
        "targetEntityId": "2",
        "propertyKey": "key:mass",
        "propertyLabel": "质量 m (kg)",
        "propertyIndex": 5,
        "controlMode": "discrete",
        "rangeMode": "custom",
        "minValue": 0.1,
        "maxValue": 1,
        "sliderStep": 0.1,
        "commitWhileRunning": false,
        "runtimeSmoothingEnabled": true,
        "runtimeMaxRate": 12,
        "runtimeTransitionMode": "smooth",
        "runtimeTransitionDuration": 0.1,
        "showTicks": true,
        "compactMode": false,
        "accentColor": "#0b7285",
        "locked": false
      }
    }
  ]
}
