文档

实体、端口与关系

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

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

实体是有身份的对象

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

support ceiling
surface floor type=horizontal friction=rough mu=0.25
body crate mass=8kg on=floor
pulley P radius=8cm

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

端口是连接位置

一个实体可以暴露多个有意义的端口。例如物体有 topbottomleftrightcenter,滑轮有 axlerim。端口用点号引用:

attach P.axle to ceiling
attach spring.end to crate.left

大多数时候不必手写端口。pulley P fixed to ceilingpendulum 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

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