Zum Inhalt

math_util

Quelle: base/tealdef/scripts/math_util.d.tl

Hinweise

Typen der skalaren Mathe-Helfer in /scripts/mathutil.lua (MathUtil): Interpolation, Begrenzen auf einen Bereich, Umrechnen zwischen Bereichen und Hermite-Kurven. Wenn die Datei geladen wird, trägt sie dieselben Funktionen auch in Luas globale Tabelle math ein (math.clamp, math.lerp, math.mapClamp, ...).

MathUtil

record global base/tealdef/scripts/math_util.d.tl:3

global record MathUtil

Hinweise

Skalare Mathe-Helfer aus /scripts/mathutil.lua. Wenn die Datei geladen wird, legt sie dieselben Funktionen auch in Luas globaler Tabelle math an.

Felder

Name Typ Beschreibung
llongMax integer Große positive Ganzzahl-Konstante (92233720368548), eine „unendliche“ Obergrenze.
llongMin integer Große negative Ganzzahl-Konstante (-92233720368548), eine „unendliche“ Untergrenze.

Funktionen

lerp<T>(T, T, T) : T base/tealdef/scripts/math_util.d.tl:4

Hinweise

Lineare Interpolation a + (b - a) * s.

Parameter Typ Beschreibung
#1 T Startwert a (Ergebnis bei s = 0).
#2 T Endwert b (Ergebnis bei s = 1).
#3 T Interpolationsfaktor s; wird nicht begrenzt.

Rückgabe T

invLerp<T>(T, T, T) : T base/tealdef/scripts/math_util.d.tl:5

Hinweise

Umkehrung von lerp, (x - a) / (b - a). Gibt an, wo x zwischen a und b liegt (0 bei a, 1 bei b).

Parameter Typ Beschreibung
#1 T Der Wert x.
#2 T Bereichsanfang a.
#3 T Bereichsende b.

Rückgabe T

Details

Wird nicht begrenzt. Werte außerhalb des Bereichs ergeben Ergebnisse unter 0 oder über 1.

herp<T>(T, T, T, T, number) : T base/tealdef/scripts/math_util.d.tl:6

Hinweise

Kubische Hermite-Interpolation zwischen p0 und p1 mit den Tangenten t0 und t1 beim Parameter s (0 bis 1).

Parameter Typ Beschreibung
#1 T Startpunkt p0.
#2 T Endpunkt p1.
#3 T Tangente t0 am Start.
#4 T Tangente t1 am Ende.
#5 number Kurvenparameter s, 0 bei p0 und 1 bei p1.

Rückgabe T

Details

Funktioniert mit Zahlen und mit Vektortypen, die +, - und die Multiplikation mit einer Zahl kennen (die Transformator-Helfer nutzen es mit Vec3f).

herpPrime<T>(T, T, T, T, number) : T base/tealdef/scripts/math_util.d.tl:7

Hinweise

Ableitung von herp nach s, also die Tangente der Kurve bei s.

Parameter Typ Beschreibung
#1 T Startpunkt p0.
#2 T Endpunkt p1.
#3 T Tangente t0 am Start.
#4 T Tangente t1 am Ende.
#5 number Kurvenparameter s.

Rückgabe T

randf(number, number) : number base/tealdef/scripts/math_util.d.tl:8

Hinweise

Gleichverteilte Zufallszahl zwischen den beiden Argumenten, berechnet mit math.random().

Rückgabe number

log2(number) : number base/tealdef/scripts/math_util.d.tl:9

Hinweise

Logarithmus zur Basis 2.

Rückgabe number

clamp<T>(T, T, T) : T base/tealdef/scripts/math_util.d.tl:10

Hinweise

Begrenzt einen Wert auf einen Bereich.

Parameter Typ Beschreibung
#1 T Der Wert.
#2 T Untergrenze.
#3 T Obergrenze.

Rückgabe T: Die Untergrenze, wenn der Wert darunter liegt, die Obergrenze, wenn er darüber liegt, sonst den Wert.

map<T>(T, T, T, T, T) : T base/tealdef/scripts/math_util.d.tl:11

Hinweise

Bildet x linear vom Bereich a..b auf den Bereich c..d ab, ohne Begrenzung.

Parameter Typ Beschreibung
#1 T Der Wert x.
#2 T Anfang des Quellbereichs a.
#3 T Ende des Quellbereichs b.
#4 T Zielwert c (für x = a).
#5 T Zielwert d (für x = b).

Rückgabe T

mapClamp<T>(T, T, T, T, T) : T base/tealdef/scripts/math_util.d.tl:12

Hinweise

Wie map, aber das Ergebnis wird auf den Zielbereich begrenzt (egal, ob c oder d größer ist).

Parameter Typ Beschreibung
#1 T Der Wert x.
#2 T Anfang des Quellbereichs a.
#3 T Ende des Quellbereichs b.
#4 T Zielwert c (für x <= a).
#5 T Zielwert d (für x >= b).

Rückgabe T

Beispiel

-- from base/content/game_mechanics/game_mechanics/industries/industries.script.tl
local spawnProbability = math_util.clamp(math_util.invLerp(rating, 0.25, 0.75), 0, 1)

round(number) : integer base/tealdef/scripts/math_util.d.tl:13

Hinweise

Rundet auf die nächste ganze Zahl (math.floor(x + 0.5)). Genau halbe Werte werden aufgerundet.

Rückgabe integer

equal(number, number, number) : boolean base/tealdef/scripts/math_util.d.tl:14

Hinweise

Gibt true zurück, wenn sich zwei Zahlen höchstens um das angegebene Epsilon (drittes Argument) unterscheiden.

Rückgabe boolean