- inertie
- dynamique de translation
$\vec F = m \vec a$ - action/réaction
calcul discrète, approximation.
其实最近做过
Simulate(dt, F) {
a = F / m; // acceleration, force, masse
v += a * dt;
p += v * dt; // position
}
问题:依旧是力和时间非常数关系。将单位时间减半可以大幅增加精确性。
渲染频率和计算频率不一定相同。
可以“创造”新的力。
新的力添加新的属性:电荷,静止长度……
- F : dynamique
- m : statique
- a : cinématique
跳跃全程:重力;
起跳:添加一个向上的速度;若选择添加力则需要一个极大的力;
垂直移动平台:受到向上向下的力……
垂直移动平台+碰撞(马里奥的箱子):可能的平台倾覆。
Comparaison deux-à-deux donne une complexité de
| AST | JOU | BAL | HUD | ||
|---|---|---|---|---|---|
| AST | T | T | T | F | 1110 |
| JOU | T | F | T | F | 1010 |
| BAL | T | T | F | F | 1100 |
| HUD | F | F | F | F | 0000 |
由左表产生右边的编码,之后以位比较判定是否可能碰撞。 $$ JOU \times JOU \ 0100 \ & \ 1010 = 0000 $$
四叉树(可能有跨区域的问题),复杂度$O(n \log{n})$。
碰撞块
假如物体无需旋转则可以选择。
由一系列的封闭线段组成的碰撞块。
检查红色部分线段是否有碰撞。
不同物体不同颜色,最后检测顶层的颜色。(利用GPU计算)
maillage de collision 不一定和实际物体一致:
- 更大
- 更小
- 填充物体上的洞
给碰撞块添加“触手1”:e.g. 下方接触,上方不接触,物体旋转。
穿模问题:
- 减少帧之间的时常
- 增大碰撞块的形状,关联上下帧(?)simulation continue 上一帧、下一帧和两者间的连线
汽车!
3D : 3 translation + 3 rotations
- rigide
- souple
- total
- partiel
- fixe
contraintes entre objets et un point d'attache
supposons que
-
$a$ déplace ; joint est déplacé,$b$ déplace.
顺序很复杂。
一组由joint连接的物体。
Footnotes
-
一定半径的圆/球。 ↩