Paths

Řídicí body dráhy

Definuje pozice, roll a volitelné explicitní tangenty hladké cesty.

Control points používají veřejné pravotočivé Z-up souřadnice. Každý bod obsahuje pozici a roll; tangenta může vzniknout automaticky nebo být zadána ručně.

Automatická tangenta#

GML
track.add_point(x, y, z, roll=0);

Explicitní tangenta#

GML
track.add_point_tangent(
    x, y, z,
    tangent_x, tangent_y, tangent_z,
    roll=0
);

Explicitní tangenta musí být konečná a nenulová. Její směr a délka přímo tvarují Hermite křivku kolem daného control pointu.

Čtení bodů#

GML
var count = track.get_point_count();
var point = track.get_point(1);
FieldVýznam
indexIndex control pointu od nuly.
x, y, zVeřejná pozice bodu.
rollNatočení kolem tangenty ve stupních.
tangent_x/y/zExplicitní nebo vygenerovaná tangenta.
explicit_tangentZda tangentu dodalo add_point_tangent().

Limity a validace#

  • Cesta může obsahovat nejvýše 2048 control points.
  • Pozice, tangenty i roll musí být konečné.
  • Dva sousední body nesmějí ležet na stejné pozici.
  • get_point() s indexem mimo rozsah vrátí undefined a nastaví high-level error.

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íkSignaturaKontrakt operace
JoltPath.add_pointJoltPath.add_point(x, y, z, roll = 0)Boolean; místní XYZ m a roll° default 0, nejvýše2048 bodů. Explicitní tangent konečný nenulový, jeho délka ovlivní Hermite křivku. Editace zahodí starý build; poté build_smooth.
JoltPath.add_point_tangentJoltPath.add_point_tangent(x, y, z, tx, ty, tz, roll = 0)Boolean; místní XYZ m a roll° default 0, nejvýše2048 bodů. Explicitní tangent konečný nenulový, jeho délka ovlivní Hermite křivku. Editace zahodí starý build; poté build_smooth.
JoltPath.get_pointJoltPath.get_point(index)set_loop Boolean výsledku, změna zahodí build; is_loop Boolean, count číslo/0 při chybě. get_point(index od0) kopie position/roll/tangent/explicit_tangent nebo undefined.
JoltPath.get_point_countJoltPath.get_point_count()set_loop Boolean výsledku, změna zahodí build; is_loop Boolean, count číslo/0 při chybě. get_point(index od0) kopie position/roll/tangent/explicit_tangent nebo undefined.