Souřadnicový systém
Definuje positions, directions, rotations a units veřejného API.
JoltPhysics používá pravotočivý Z-up veřejný souřadnicový systém. Současné native mapování je záměrně identity mapping, takže veřejné X, Y a Z procházejí Jolt bridge bez prohození os.
Osy#
| Osa | Význam |
|---|---|
| X | Vlevo / vpravo |
| Y | Vpřed / vzad |
| Z | Nahoru / dolů; kladné Z míří nahoru |
// Deset jednotek nad originem.
var body = jolt_box_create_dynamic(0, 0, 10, 1, 1, 1);
// World-space impulse směrem vzhůru.
body.add_impulse(0, 0, 5);Coordinate spaces#
| Hodnota | Prostor |
|---|---|
| Body position a transform | World space |
| Linear a angular velocity | World space |
| Forces a impulses | World space |
| Bod add_force_local / add_impulse_local | Body-local point; vector zůstává world-space |
| Compound child transform | Local vůči compound |
| Contact position a normal | World space |
| Raycast endpoints a results | World space |
Jednotky#
Engine neurčuje pojmenovanou distance unit, ale konzistentní real-world scale přináší nejlepší výsledky. Doporučená konvence jsou metry pro distance, kilogramy pro mass a sekundy pro time. Default gravity -9.81 na Z pak přibližně odpovídá zemské gravitaci, pokud jedna world unit znamená jeden metr.
Úhly a rotace#
- Kanonickou rotací je normalizovaný quaternion {x,y,z,w}.
- Funkce explicitně označené Euler používají stupně.
- Euler conversion skládá q = qZ × qY × qX: veřejné X, poté Y a nakonec Z.
- Angular velocity používá radiány za sekundu, nikoli stupně za sekundu.
- World-space surface normals a direction vectors používají stejné pravotočivé osy.
Rozměry#
High-level primitive creators používají celé veřejné dimensions. Například jolt_box_create_dynamic(x,y,z,width,depth,height) přijímá celkovou velikost, zatímco low-level native Box API pracuje s half extents. Capsule a Cylinder creators dokumentují vlastní pravidla pro full height.
Příklad mapování z 2D room#
// Pouze ukázková policy: room X -> physics X,
// obrácené room Y -> physics Z, pevná hloubka -> physics Y.
var physics_x = x * scale;
var physics_y = 0;
var physics_z = -y * scale;Správný mapping závisí na camera a hře. Conversion udržujte v jednom helperu, místo abyste screen-space a physics-space hodnoty míchali napříč gameplay kódem.