Vorgegebene Funktionen Standard-Bibliothek
Vorgegebene Funktionen Standard-Bibliothek
Aseba bringt eine Standard-Bibliothek mit, die von Haus aus bereits viele Funktionen enthält. Die meisten Geräte liefern diese Standard-Bibliothek mit.1 Falls die Firmware Ihres Gerätes schon etwas älter ist, unterstützt sie möglicherweise noch nicht neu hinzugekommene Funktionen. Seit Aseba 1.1 sind folgende Funktionen verfügbar2:
- math.copy(A,B)
- Kopiert eines nach dem anderen jedes Element des Vektors $B$ in den Vektor $A$: $A_i = B_i$.
- math.fill(A,c)
- Schreibt die Konstante $c$ in jedes Element des Vektors $A$: $A_i = c$.
- math.addscalar(A, B, c)
- Berechne $A_i = B_i + c$, wobei $c$ ein Skalar ist.
- math.add(A, B, C)
- Berechne $A_i = B_i + C_i$, wobei$A$, $B$ und $C$ drei gleichgrosse Vektoren sind.
- math.sub(A, B, C)
- Berechne $A_i = B_i - C_i$, wobei $A$, $B$ und $C$ drei gleichgrosse Vektoren sind.
- math.mul(A, B, C)
- Berechne $A_i = B_i \cdot C_i$, wobei $A$, $B$ und $C$ gleichgrosse Vektoren sind. Beachte: Dies ist kein Skalarprodukt!
- math.div(A, B, C)
- Berechne $A_i = B_i / C_i$, wobei $A$, $B$ und $C$ drei gleichgrosse Vektoren sind. Eine Division durch Null führt zu einer Ausnahmesituation.
- math.min(A, B, C)
- Speichere für jedes Element das Minimum der Vektoren $B$ und $C$ in $A$, wobei $A$, $B$ und $C$ drei Vektoren gleicher Grösse sind: $A_i = \mathrm{min}(B_i, C_i)$.
- math.max(A, B, C)
- Speichere für jedes Element das Maximum der Vektoren $B$ und $C$ in $A$, wobei $A$, $B$ and $C$ drei Vektoren gleicher Grösse sind: $A_i = \mathrm{max}(B_i, C_i)$.
- math.clamp(A, B, C, D)
- Beschränke jedes Element $B_i$ dass $C_i<A_i<D_i$ erfüllt ist und speichere es in $A_i$.
- math.dot(r, A, B, n)
- Berechne das Skalarprodukt zweier gleichgrosser Vektoren $A$ und $B$: $r = \frac{\sum_i(A_i\cdot B_i)}{2^{n}}$
- math.stat(V, min, max, mean)
- Berechne das Maximum, den Mittelwert und das Minimum des Vektors $V$.
- math.argbounds(A, argmin, argmax)
- Bestimme die Indizes argmin und argmax, die dem kleinsten und dem grössten Wert aus $A$ entsprechen.
- math.sort(A)
- Sortiere den Vektor $A$ in situ.
- math.muldiv(A, B, C, D)
- Berechne die Multiplikations-Division mit 32-bit-Genauigkeit. $A_i = \frac{B_i\cdot C_i}{D_i}$. Eine Division durch Null führt zu einer Ausnahmesituation.
- math.atan2(A, Y, X)
- Berechne $A_i=\arctan\left(\frac{Y_i}{X_i}\right)$, wobei die Zeichen von $Y_i$ und $X_i$ den Ausgabe-Quandranten festlegen. $A$, $Y$ und $X$ müssen Vektoren gleicher Grösse sein. Beachte, dass $X_i = 0$ und $Y_i = 0$ zu dem Ergebnis $A_i = 0$ führen..
- math.sin(A, B)
- Berechne $A_i = \sin(B_i)$, wobei $A$ und $B$ zwei Vektoren gleicher Grösse sind.
- math.cos(A, B)
- Berechne $A_i = \cos(B_i)$, wobei $A$ und $B$ zwei Vektoren gleicher Grösse sind.
- math.rot2(A, B, Winkel)
- Rotiere den Vektor $B$ um Winkel und speichere das Ergebnis in $A$. Beachte: $A$ und $B$ müssen beide genau 2 Elemente enthalten.
- math.sqrt(A, B)
- Berechne $A_i = \sqrt{B_i}$, wobei $A$ und $B$ zwei Vektoren gleicher Grösse sind.
- math.rand(v)
- Bestimme einen zufälligen Wert $v$ aus dem zwischen $-32768$ und $32767$.
Seit Skalare als Vektoren mit Grösse eins angesehen sind, kann man diese Funktionen mit Skalaren benutzen:
var theta = 16384
var cos_theta
call math.cos(cos_theta, theta)