Úhel, otáčky, fáze a nulování
Čtěte skutečnou víceotáčkovou polohu Wheel/Crank a změňte logickou nulu bez pohybu tělesa.
| Položka | Význam / výchozí hodnota |
|---|---|
| get_angle() | Souvislý logický úhel ve stupních, kladný i záporný. |
| get_turns() | Celé otáčky se zaokrouhlením k nule; −90° má 0 otáček. |
| get_phase() / get_value() | Fáze [0,1) přes floor modulo; −90° má fázi 0.75. |
| get_speed() | Skutečná relativní rychlost kolem osy v °/s, nikoli rad/s z body API. |
| set_zero() | Nastaví současnou polohu jako logickou nulu, vrací true/false. |
Příklad#
var angle = wheel.get_angle();
var turns = wheel.get_turns();
var phase = wheel.get_phase();
var speed = wheel.get_speed();
if (keyboard_check_pressed(ord("Z"))) wheel.set_zero();Nulování zachová fyzickou polohu, rychlost i uložený speed/torque. Zruší dosavadní zachycení detentů, phase motor znovu vybere cíl a absolutní číselné cíle nadále platí vůči nové nule. Při zapnutém polohovém motoru se tedy může po nulování změnit fyzický bod, do kterého motor směřuje.
Krok simulace a přesnost#
Tracker vyžaduje dt × součet úhlových mezí obou konců < 135° za celý vzorkovaný physics update. U Dynamic bere max angular velocity, u Kinematic předepsanou rychlost. Vyšší počet collision substeps sám tuto podmínku neobejde. Například výchozí dynamická mez kolem 2700°/s znamená, že dt=0.1 s pro volné kolo neprojde, i když motor požaduje nulu. Používejte běžnou smyčku jolt_update() s vhodným pevným krokem.
Nové související postupy#
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| JoltControl.get_angle | JoltControl.get_angle() | Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu. |
| JoltControl.get_phase | JoltControl.get_phase() | Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu. |
| JoltControl.get_speed | JoltControl.get_speed() | Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu. |
| JoltControl.get_turns | JoltControl.get_turns() | Pouze Wheel/Crank: úhel více otáček ve ° / počet otáček / fáze 0..1 / rychlost °/s. Číslo nebo undefined při neplatnosti či nevhodném typu. |
| JoltControl.set_zero | JoltControl.set_zero() | Pouze Wheel/Crank, Boolean. Nastaví logickou nulu enkodéru; nepřetočí fyzické těleso. |