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)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License