文档

实体、端口与关系

把物体、连接点和物理约束写成一个可求解的模型。

图上的圆和方块只是结果。模型真正关心的是:有哪些实体、它们在哪里连接、连接意味着什么。

实体是有身份的对象

每个实体由关键字和唯一标识符组成,属性跟在后面:

support ceiling
surface floor orientation=horizontal friction=rough mu=0.25
load crate 8kg
pulley P radius=8cm

crate、floor 和 P 是标识符。其他语句用这些名称引用同一个对象。质量、长度、角度等物理量应带单位。

端口是连接位置

实体内部可以有多个有意义的连接位置,例如物体的连接点以及滑轮的轴心和轮缘,但普通模型不需要手写端口:

pulley M
load crate 8kg

M <-> crate

编译器会根据实体类型在内部选择 M 的轴心和 crate 的顶部。只有无法自动推导的定制路径才需要显式端点。

关系不是装饰线

关系声明一个物理约束。下面三条语句分别表示刚性连接、无滑动滚动和理想抛射:

pivot pivot_beam body=beam support=O
rolling rolling_wheel body=wheel surface=ramp mode=without_slipping
launch launch_ball body=ball origin=ground speed=12m/s angle=40deg

它们会进入求解器和诊断,而不只是让渲染器画线。缺少半径、速度或其他必要条件时,编译器应明确拒绝求解。

关系中的简写值会按物理量维度或允许值匹配属性,因此在含义明确时,40deg 12m/s 与上面的写法等价。需要让属性名称直接可见,或需要消除歧义时,仍可写成 angle=40deg speed=12m/s。

绳路按顺序书写

常见滑轮绳路会自动推导。遇到多根绳或特殊拓扑时,先声明绳子,再从一端按顺序写到另一端:

rope R
R: ceiling -> M -> F -> R.free
  • ceiling:绳子的第一端固定在支架上。
  • M 和 F:绳路依次绕过这些滑轮。
  • R.free:具名绳 R 的自由端。

同一条绳的各段共享理想张力。绳长约束、切点和运动比都由同一条路径产生,不应另写一份视觉连接。

模型和布局分开

实体和关系描述物理事实;place 只在自动布局不足以表达题意时固定画面位置:

place crate x=0.72 y=0.68 variant=wide

坐标是画布中的归一化位置,范围为 0 到 1。它不会改变物体的物理坐标、受力或运动方程。