{
  "schema": "physics-anim-scene",
  "version": 1,
  "pixelsPerMeter": 240,
  "gravityAcceleration": 9.8,
  "coulombK": 8987551792.3,
  "timeScale": 1,
  "canvasBackground": {
    "mode": "coordinate",
    "origin": {
      "x": 0,
      "y": 0
    }
  },
  "view": {
    "x": 30,
    "y": 30,
    "scale": 0.8
  },
  "entities": [
    {
      "id": 90,
      "type": "RichTextEditor",
      "state": {
        "pos": {
          "x": 360,
          "y": 65
        },
        "width": 660,
        "height": 100,
        "text": "## 单摆周期 · 多周期计时\n摆长 1.00 m，摆球 0.20 kg，初始摆角 8°。",
        "fontSize": 16,
        "fontWeight": 400,
        "backgroundColor": "#ffffff",
        "backgroundOpacity": 0.96,
        "textColor": "#163047",
        "borderColor": "#cbd5e1",
        "borderWidth": 1,
        "cornerRadius": 10,
        "showBorder": true,
        "padding": 18,
        "lineHeight": 1.45,
        "locked": true
      }
    },
    {
      "id": 3,
      "type": "MechanicsPlaneBoundary",
      "state": {
        "pos": {
          "x": 350,
          "y": 170
        },
        "length": 160,
        "thickness": 8,
        "angleDeg": 0,
        "elasticityCoefficient": 0,
        "friction": 0,
        "doubleSided": true,
        "locked": true
      }
    },
    {
      "id": 1,
      "type": "MechanicsBall",
      "state": {
        "pos": {
          "x": 383.4015442304157,
          "y": 412.6643364979769
        },
        "vel": {
          "x": 0,
          "y": 0
        },
        "radius": 12,
        "mass": 0.2,
        "color": "#2563eb",
        "angle": 0,
        "omega": 0,
        "useGravity": true,
        "isStatic": false,
        "isPointMass": true,
        "locked": false,
        "elasticityCoefficient": 1,
        "friction": 0,
        "frictionMode": "simple",
        "showForces": false,
        "showVelocityVector": false,
        "showAccelerationVector": false,
        "showTrail": true,
        "maxTrail": 600,
        "trailUnlimited": false
      }
    },
    {
      "id": 2,
      "type": "MechanicsLightRope",
      "state": {
        "pos": {
          "x": 366.7007721152079,
          "y": 293.8321682489884
        },
        "length": 240,
        "restLength": 240,
        "autoAttach": false,
        "autoRoutePulley": false,
        "endpointA": {
          "local": {
            "x": -16.700772115207855,
            "y": -118.83216824898844
          },
          "entityId": null,
          "anchor": "center",
          "support": "fixed"
        },
        "endpointB": {
          "local": {
            "x": 16.700772115207855,
            "y": 118.83216824898844
          },
          "entityId": 1,
          "anchor": "center",
          "support": "fixed"
        },
        "color": "#475569",
        "thickness": 2,
        "locked": false
      }
    },
    {
      "id": 4,
      "type": "Ruler",
      "state": {
        "pos": {
          "x": 520,
          "y": 295
        },
        "length": 240,
        "thickness": 24,
        "angleDeg": 90,
        "unit": "m",
        "minorStep": 0.1,
        "majorEvery": 5,
        "showTicks": true,
        "showNumbers": true,
        "showMeasure": true,
        "showEntityMarkers": 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",
        "controlMode": "main",
        "enabled": false,
        "timeScale": 1,
        "precisionSec": 0.01,
        "zeroSimTime": 0,
        "heldSec": 0,
        "showDial": false,
        "locked": true
      }
    },
    {
      "id": 91,
      "type": "RichTextEditor",
      "state": {
        "pos": {
          "x": 960,
          "y": 255
        },
        "width": 430,
        "height": 460,
        "text": "### 同方向过平衡位置计数\n水平偏移为零时，摆球经过平衡位置。\n\n1. 点击开始，从右侧静止释放。\n2. 记录第一次向左过零时刻 t₁。\n3. 记录第六次向左过零时刻 t₆。\n4. T = (t₆ − t₁) / 5。\n\ng = 4π²L / T²。\n改变质量或摆长时先重置；每次只改一个条件。",
        "fontSize": 16,
        "fontWeight": 400,
        "backgroundColor": "#ffffff",
        "backgroundOpacity": 0.96,
        "textColor": "#163047",
        "borderColor": "#cbd5e1",
        "borderWidth": 1,
        "cornerRadius": 10,
        "showBorder": true,
        "padding": 18,
        "lineHeight": 1.45,
        "locked": true
      }
    },
    {
      "id": 6,
      "type": "ObservationVariables",
      "state": {
        "pos": {
          "x": 960,
          "y": 670
        },
        "width": 420,
        "height": 252,
        "title": "摆球实时测量",
        "fontSize": 13,
        "compactMode": false,
        "accentColor": "#0f766e",
        "locked": true,
        "definitions": [
          {
            "id": "reading_offset",
            "name": "offset",
            "label": "水平偏移 x / m",
            "expression": "ref_1_basic_x - 1.4583333333333333",
            "visible": true
          },
          {
            "id": "reading_speed",
            "name": "speed",
            "label": "水平速度 vₓ / (m/s)",
            "expression": "ref_1_ball_vx",
            "visible": true
          },
          {
            "id": "reading_mass",
            "name": "mass",
            "label": "摆球质量 m / kg",
            "expression": "ref_1_basic_mass",
            "visible": true
          },
          {
            "id": "reading_length",
            "name": "length",
            "label": "支点到球心 L / m",
            "expression": "sqrt((ref_1_basic_x - 1.4583333333333333)^2 + (ref_1_basic_y - 0.7291666666666666)^2)",
            "visible": true
          }
        ]
      }
    },
    {
      "id": 7,
      "type": "CoordinateSystem",
      "state": {
        "pos": {
          "x": 360,
          "y": 730
        },
        "width": 640,
        "height": 235,
        "enabled": true,
        "targetEntityIdX": "",
        "targetEntityIdY": "6",
        "xMode": "time",
        "yMode": "obs_offset",
        "ySeries": [
          {
            "enabled": true,
            "targetEntityId": "6",
            "yMode": "obs_offset",
            "color": "#2563eb"
          }
        ],
        "sampleStepSec": 0.008333333333333333,
        "maxPoints": 4800,
        "timeWindowSec": 16,
        "autoY": true,
        "xLabel": "t / s",
        "yLabel": "水平偏移 x / m",
        "showExtremaX": false,
        "showExtremaY": false,
        "showIntercepts": false,
        "dataSeries": [
          []
        ],
        "data": [],
        "locked": true
      }
    }
  ]
}
