{
  "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": 329.3285545110575,
    "y": 21.17233667158348,
    "scale": 0.7236024222413997
  },
  "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.50 kg，接触摩擦系数 μ = 0.20。",
        "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": 502.06994321160676,
          "y": 337.88053291129376
        },
        "width": 991.1398864232134,
        "height": 210.2472374657175,
        "friction": 0.2,
        "frictionMode": "advanced",
        "frictionBindings": [
          {
            "targetId": "1",
            "friction": 0.2
          }
        ],
        "rollingFriction": 0,
        "enabled": true,
        "color": "#f1f5f9",
        "borderColor": "#94a3b8",
        "locked": false
      }
    },
    {
      "id": 1,
      "type": "MechanicsBlock",
      "state": {
        "pos": {
          "x": 260.76955834115756,
          "y": 320
        },
        "vel": {
          "x": 0,
          "y": 0
        },
        "angle": 0,
        "omega": 0,
        "width": 64,
        "height": 42,
        "frontBackWidthM": 1,
        "mass": 0.5,
        "densitySettingEnabled": false,
        "fluidInteractionEnabled": true,
        "fluidManualCalibrationEnabled": false,
        "fluidEffectiveDepthM": 0,
        "fluidVolumeM3": 0,
        "fluidReferenceAreaM2": 0,
        "fluidDragCoefficient": -1,
        "fluidLinearDragCoefficientNsM": -1,
        "useGravity": false,
        "elasticityCoefficient": 0,
        "friction": 0.2,
        "frictionMode": "advanced",
        "frictionBindings": [
          {
            "targetId": "3",
            "friction": 0.2
          }
        ],
        "color": "#2563eb",
        "strokeColor": "#2980b9",
        "backgroundImageDataUrl": "",
        "backgroundImageName": "",
        "backgroundImageFit": "stretch",
        "backgroundImageOpacity": 1,
        "locked": false,
        "isPointMass": false,
        "showDirectionMarker": false,
        "directionMarkerColor": "rgba(255, 255, 255, 0.7)",
        "showForces": false,
        "forceDisplayAtCoM": false,
        "showVelocityVector": true,
        "showAccelerationVector": false,
        "showTrail": false,
        "maxTrail": 100,
        "trailUnlimited": false
      }
    },
    {
      "id": 2,
      "type": "SpringForceMeter",
      "state": {
        "pos": {
          "x": 409.1440609973287,
          "y": 320
        },
        "endpointA": {
          "local": {
            "x": 148.37450265617116,
            "y": 0
          },
          "entityId": 102,
          "anchor": "hook",
          "support": "fixed",
          "fixedVector": null
        },
        "endpointB": {
          "local": {
            "x": -148.37450265617116,
            "y": 0
          },
          "entityId": 1,
          "anchor": "center",
          "support": "fixed",
          "fixedVector": null
        },
        "length": 296.7490053123423,
        "restLength": 300,
        "stiffness": 20,
        "damping": 2,
        "maxForce": 100000,
        "showRestLength": false,
        "thickness": 2,
        "color": "#495057",
        "disabled": false,
        "autoAttach": false,
        "attachDistance": 30,
        "locked": false,
        "routePulleyId": null,
        "autoRoutePulley": true,
        "routePulleyManual": false,
        "routePulleyAuto": false,
        "routePulleySideA": null,
        "routePulleyDir": null,
        "routePulleyWrap": null,
        "multiPulleyRoute": {
          "version": 1,
          "nodes": [],
          "compressedLength": 0,
          "compressedCycles": []
        },
        "contactHalfWidth": 8,
        "collisionMode": "none",
        "rangeN": 5,
        "fullScaleTravel": 100,
        "caseWidth": 55,
        "caseLength": 230,
        "hookMass": 0.05,
        "caseMass": 0.45,
        "caseAngularDamping": 0,
        "caseMaxAngularSpeed": 18,
        "caseAutoAlignToForce": true,
        "caseFixedDirectionEnabled": false,
        "caseFixedDirectionDeg": 90,
        "caseColor": "#f8f9fa",
        "accentColor": "#212529",
        "springColor": "#343a40",
        "showReading": true
      }
    },
    {
      "id": 4,
      "type": "MechanicsExternalForce",
      "state": {
        "pos": {
          "x": 666.3866054660705,
          "y": 348.5699040453224
        },
        "forceN": 0,
        "angleDeg": 0,
        "forceMode": "motion",
        "linearForceRateNPerS": 0,
        "linearStartTime": 0,
        "motionMode": "constantVelocity",
        "targetSpeed": 0.5,
        "targetVx": 0.5,
        "targetVy": 0,
        "targetAcceleration": 0,
        "motionInitialSpeed": 0.5,
        "motionInitialVx": 0.5,
        "motionInitialVy": 0,
        "motionAngleDeg": 0,
        "circularRadiusM": 1,
        "circularSpeed": 1,
        "circularClockwise": true,
        "motionResponse": 16,
        "motionDampingRatio": 1,
        "maxControlForceN": 1000,
        "targetId": "102",
        "targetEndpoint": "",
        "targetLocalX": null,
        "targetLocalY": null,
        "enabled": true,
        "showArrow": true,
        "showMotionPrediction": false,
        "showInitialVelocityHint": true,
        "color": "#d97706",
        "locked": false,
        "autoBindOnDrop": false
      }
    },
    {
      "id": 6,
      "type": "Ruler",
      "state": {
        "pos": {
          "x": 501.36835906045974,
          "y": 485
        },
        "length": 921.4504619346873,
        "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": false
      }
    },
    {
      "id": 7,
      "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": 1231.9456321148612,
          "y": 285
        },
        "width": 430,
        "height": 460,
        "text": "### 匀速后，拉力等于摩擦力\n绿色牵引器以 0.25 m/s 水平移动。\n测力计串联在牵引器与蓝色物块之间。\n\n1. 开始后先观察启动过程。\n2. 在 6–8 s 速度稳定时读取拉力。\n3. 质量改为 1.00 kg，保持接触面不变。\n4. 恢复质量，改变桌面与物块的配对摩擦系数。\n\n上图为拉力，下图为物块速度。每次改变条件均先重置。",
        "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": false
      }
    },
    {
      "id": 8,
      "type": "ObservationVariables",
      "state": {
        "pos": {
          "x": 960,
          "y": 670
        },
        "width": 420,
        "height": 252,
        "title": "稳态测量 · 先检查速度",
        "accentColor": "#0f766e",
        "fontSize": 13,
        "compactMode": false,
        "locked": true,
        "editIndex": 2,
        "insertSourceId": "",
        "insertMode": "",
        "definitions": [
          {
            "id": "reading_pull",
            "name": "pull",
            "label": "测力计拉力 F / N",
            "expression": "ref_2_spring_force_magnitude",
            "visible": true
          },
          {
            "id": "reading_velocity",
            "name": "velocity",
            "label": "物块 vₓ / (m/s)",
            "expression": "ref_1_block_vx",
            "visible": true
          },
          {
            "id": "reading_mass",
            "name": "mass",
            "label": "物块质量 m / kg",
            "expression": "ref_1_basic_mass",
            "visible": true
          }
        ]
      }
    },
    {
      "id": 9,
      "type": "CoordinateSystem",
      "state": {
        "pos": {
          "x": 360,
          "y": 631.5
        },
        "width": 640,
        "height": 175,
        "enabled": true,
        "targetEntityIdX": "",
        "targetEntityIdY": "2",
        "targetEntityId": "",
        "xMode": "time",
        "yMode": "spring_force_magnitude",
        "ySeries": [
          {
            "enabled": true,
            "targetEntityId": "2",
            "yMode": "spring_force_magnitude",
            "color": "#d97706"
          }
        ],
        "projAxisDeg": 0,
        "unwrapAngle": true,
        "timeWindowSec": 9,
        "sampleStepSec": 0.008333333333333333,
        "maxPoints": 3600,
        "autoY": true,
        "yMin": -1,
        "yMax": 1,
        "xLabel": "t / s",
        "yLabel": "F / N",
        "showExtremaX": false,
        "showExtremaY": false,
        "showIntercepts": false,
        "dataSeries": [
          []
        ],
        "data": []
      }
    },
    {
      "id": 10,
      "type": "CoordinateSystem",
      "state": {
        "pos": {
          "x": 360,
          "y": 850
        },
        "width": 640,
        "height": 175,
        "enabled": true,
        "targetEntityIdX": "",
        "targetEntityIdY": "1",
        "targetEntityId": "",
        "xMode": "time",
        "yMode": "block_vx",
        "ySeries": [
          {
            "enabled": true,
            "targetEntityId": "1",
            "yMode": "block_vx",
            "color": "#2563eb"
          }
        ],
        "projAxisDeg": 0,
        "unwrapAngle": true,
        "timeWindowSec": 9,
        "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": 102,
      "type": "MechanicsParticle",
      "state": {
        "pos": {
          "x": 557.5185636534999,
          "y": 320
        },
        "vel": {
          "x": 40,
          "y": 0
        },
        "angle": 0,
        "omega": 0,
        "radius": 6,
        "mass": 1,
        "densitySettingEnabled": false,
        "contactYoungModulusPa": 2000000000,
        "contactPoissonRatio": 0.35,
        "fluidInteractionEnabled": false,
        "fluidManualCalibrationEnabled": false,
        "fluidVolumeModel": "sphere",
        "fluidEffectiveDepthM": 0,
        "fluidVolumeM3": 0,
        "fluidReferenceAreaM2": 0,
        "fluidDragCoefficient": -1,
        "fluidLinearDragCoefficientNsM": -1,
        "useGravity": true,
        "elasticityCoefficient": 1,
        "friction": 0,
        "frictionMode": "simple",
        "frictionBindings": [],
        "color": "#2f80ed",
        "strokeColor": "#1e40af",
        "showDirectionMarker": false,
        "directionMarkerColor": "rgba(255, 255, 255, 0.9)",
        "showForces": false,
        "forceDisplayAtCoM": false,
        "showVelocityVector": false,
        "showAccelerationVector": false,
        "showTrail": false,
        "maxTrail": 100,
        "trailUnlimited": false,
        "isPointMass": true,
        "locked": false,
        "guideColor": "#1d4ed8"
      }
    },
    {
      "id": 103,
      "type": "VariableController",
      "state": {
        "pos": {
          "x": 960,
          "y": 879.2390648944613
        },
        "width": 420,
        "height": 147.47812978892273,
        "title": "变量控制器",
        "targetEntityId": "1",
        "propertyKey": "key:frictionBinding:3",
        "propertyLabel": "高级摩擦 μ · 水平桌面 #3",
        "propertyIndex": -1,
        "controlMode": "discrete",
        "rangeMode": "custom",
        "minValue": 0,
        "maxValue": 1,
        "sliderStep": 0.1,
        "commitWhileRunning": false,
        "runtimeSmoothingEnabled": true,
        "runtimeMaxRate": 12,
        "runtimeTransitionMode": "smooth",
        "runtimeTransitionDuration": 0.1,
        "showTicks": true,
        "compactMode": false,
        "accentColor": "#0b7285",
        "locked": false
      }
    }
  ]
}
