‹›
Constraints

Limity constraintů

Definuje legální position nebo angular range samostatně pro každou podporovanou rodinu constraintů.

Jednotky a validní rozsahy limitů jsou type-specific. Nezacházejte s každým JoltConstraint, jako by přijímal stejnou signaturu set_limits().

Limit API podle typu#

TypCreation fieldsRuntime metodyJednotky a validace
Hingelimits_min / limits_maxset_limits(min,max), get_limits()Stupně; konečné a seřazené.
Sliderlimits_min / limits_maxset_limits(min,max), get_limits()World units; minimum <= 0 <= maximum.
Distancemin_distance / max_distanceset_limits(min,max), get_limits()World units; 0 <= minimum <= maximum.
Conemax_angleset_limit(angle), get_limit()Jediný swing half-angle, 0..180 stupňů.
SwingTwistnormal/plane half-angles, twist_min/maxset_limits(n,p,tmin,tmax), set_swing_limits(), set_twist_limits(), get_limits()Stupně; swing 0..180, twist uvnitř -180..180 a seřazený.
SixDOFšest axis fieldsset_axis_limit(), set_translation_limits(), set_rotation_limits()Lineární world units; angular stupně uvnitř -180..180.
Pulleymin_length / max_lengthset_length(min,max), length gettersCreation přijímá -1 auto-resolution; runtime vyžaduje 0 <= min <= max.

Fixed, free a limited#

  • Stejné Distance nebo Pulley bounds vytvoří přesnou délku.
  • Nula Slideru je relativní creation pose, proto legal range musí obsahovat nulu.
  • Hinge -180..180 znamená prakticky volnou rotaci; stejné limity uzamknou vybraný relativní úhel.
  • SwingTwist half-angle 0 uzamkne swing rozměr; 180 stupňů jej prakticky uvolní.
  • SixDOF každou osu výslovně označuje FIXED, FREE nebo LIMITED místo odvození stavu z numeric range.

SixDOF swing upozornění#

Rotation X je twist. Rotation Y/Z jsou coupled swing dimensions. CONE vyžaduje Y/Z limited ranges symetrické kolem nuly, zatímco PYRAMID dovoluje asymetrické rozsahy. Nejde o samostatné Euler clamps.

Runtime příklad#

GML
hinge.set_limits(0, 110);          // degrees
slider.set_limits(-1.5, 1.5);     // world units, contains zero
tether.set_limits(2, 4);          // non-negative distance
cone.set_limit(35);                // degrees
swing.set_twist_limits(-25, 25);  // degrees
pulley.set_length(6, 8);           // combined segment length

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
JoltConstraint.get_limitJoltConstraint.get_limit()Pouze Cone: půlúhel 0..180°; setter Boolean, getter číslo ve stupních nebo 0 při chybě.
JoltConstraint.get_limitsJoltConstraint.get_limits(){minimum, maximum} pro Hinge (°), Distance/Slider (m); SwingTwist {normal_half_angle, plane_half_angle, twist_min, twist_max} (°). undefined pro neplatný/nepodporovaný constraint nebo chybu.
JoltConstraint.get_rotation_limits_maxJoltConstraint.get_rotation_limits_max()SixDOF {x, y, z}, posuv v m / rotace v °. Skládá jednotlivé gettery; chybové složky mohou být 0.
JoltConstraint.get_rotation_limits_minJoltConstraint.get_rotation_limits_min()SixDOF {x, y, z}, posuv v m / rotace v °. Skládá jednotlivé gettery; chybové složky mohou být 0.
JoltConstraint.get_translation_limits_maxJoltConstraint.get_translation_limits_max()SixDOF {x, y, z}, posuv v m / rotace v °. Skládá jednotlivé gettery; chybové složky mohou být 0.
JoltConstraint.get_translation_limits_minJoltConstraint.get_translation_limits_min()SixDOF {x, y, z}, posuv v m / rotace v °. Skládá jednotlivé gettery; chybové složky mohou být 0.
JoltConstraint.set_limitJoltConstraint.set_limit(angle)Pouze Cone: půlúhel 0..180°; setter Boolean, getter číslo ve stupních nebo 0 při chybě.
JoltConstraint.set_limitsJoltConstraint.set_limits(minimum, maximum, twist_min = undefined, twist_max = undefined)Boolean. Hinge: -180 ≤ min ≤ 0 ≤ max ≤ 180 stupňů. Distance: 0 ≤ min ≤ max m. Slider: min ≤ 0 ≤ max m. SwingTwist: všechny 4 argumenty, normal/plane půlúhly 0..180°, -180 ≤ twist_min ≤ twist_max ≤ 180°. Konečné hodnoty; ostatní typy odmítne.
JoltConstraint.set_rotation_limitsJoltConstraint.set_rotation_limits(min_x,min_y,min_z,max_x,max_y,max_z)SixDOF: tři páry min/max, m nebo ° podle názvu. Boolean; volá tři jednotlivé set_axis_limit postupně, není atomické — předchozí osy mohou být změněné při selhání pozdější osy.
JoltConstraint.set_translation_limitsJoltConstraint.set_translation_limits(min_x,min_y,min_z,max_x,max_y,max_z)SixDOF: tři páry min/max, m nebo ° podle názvu. Boolean; volá tři jednotlivé set_axis_limit postupně, není atomické — předchozí osy mohou být změněné při selhání pozdější osy.