文档
实体、端口与关系
把物体、连接点和物理约束写成一个可求解的模型。
图上的圆和方块只是结果。模型真正关心的是:有哪些实体、它们在哪里连接、连接意味着什么。
实体是有身份的对象
每个实体由关键字和唯一标识符组成,属性跟在后面:
support ceiling
surface floor type=horizontal friction=rough mu=0.25
body crate mass=8kg on=floor
pulley P radius=8cm
crate、floor 和 P 是标识符。其他语句用这些名称引用同一个对象。质量、长度、角度等物理量应带单位。
端口是连接位置
一个实体可以暴露多个有意义的端口。例如物体有 top、bottom、left、right 和 center,滑轮有 axle 和 rim。端口用点号引用:
attach P.axle to ceiling
attach spring.end to crate.left
大多数时候不必手写端口。pulley P fixed to ceiling、pendulum P fixed to beam 等高层语法会选择正确端口。只有自定义连接位置时才需要显式写出。
关系不是装饰线
关系声明一个物理约束。下面三条语句分别表示刚性连接、无滑动滚动和理想抛射:
attach rod.center to pivot
roll wheel on ramp mode=without_slipping
launch ball from ground speed=12m/s angle=40deg
它们会进入求解器和诊断,而不只是让渲染器画线。缺少半径、速度或其他必要条件时,编译器应明确拒绝求解。
绳路按顺序书写
rope ... path 从绳子一端写到另一端:
rope R path anchor(ceiling) -> around(M) -> around(F) -> handle
anchor(ceiling):绳端固定在支架上。around(M):绳子与滑轮轮缘相切并绕过它。tie(load):绳端系在物体上。handle:自由端。
同一条绳的各段共享理想张力。绳长约束、切点和运动比都由同一条路径产生,不应另写一份视觉连接。
模型和布局分开
实体和关系描述物理事实;place 只在自动布局不足以表达题意时固定画面位置:
place crate at x=0.72 y=0.68 variant=wide
坐标是画布中的归一化位置,范围为 0 到 1。它不会改变物体的物理坐标、受力或运动方程。