Zu den arithmetischen Operatoren gehören *, /, ^, + und -.
Der unäre Negationsoperator (-) wird für die Typen Ganzzahl, Zahl und Vektor definiert. Bei allen anderen Operandentypen wird ein Fehler generiert. Bei numerischen Typen erhält man das Ergebnis, indem der Operand von Null abgezogen wird. Beim Typ Boolesche Operation wird der Operand mit False verglichen. Beim Typ Vektor wird der Operand umgekehrt (auf alle Koordinaten wird unäre Negation angewendet).
Die folgende Tabelle zeigt Beispiele für den unären Negationsoperator.
Operandentyp | Beispiel | Ergebnis |
---|---|---|
Numerisch | -3.0 | -3.0 |
Vektor | -vector(0,0,1) | Vector_(0.0, 0.0, -1.0, WorldFrame()) |
Der Additionsoperator (+) berechnet die Kombination aus zwei Operanden. Der Additionsoperator ist für die folgenden Typenpaare definiert (der Ausgabetyp wird ebenfalls gezeigt):
Die Reihenfolge ist nicht von Bedeutung.
Bei numerischen Argumenten wird eine numerische Addition durchgeführt. Bei Listen argumenten werden die Listen der Reihenfolge nach aneinandergereiht. Bei Namens- und Zeichenfolgen argumenten werden Namens werte in Zeichenfolgen umgewandelt und die Zeichenfolgen der Reihenfolge nach aneinandergereiht.
Die folgende Tabelle zeigt Beispiele für den Additionsoperator.
Operandentyp | Beispiel | Ergebnis |
---|---|---|
Namen | :My + :Name | :MyName |
Name und Zeichenfolge | :My + "Name" | "MyName" |
Gemischt numerisch | 12 + 4.5 + 3.1 | 19.6 |
Listen | {:A, :B, :C} + {1, 2.0} | {:a, :b, :c, 1, 2.0} |
Punkt und Vektor | Point(0, 0, 0) + Vector(0, 0, 1) | Point_(0.0, 0.0, 1.0, WorldFrame()) |
Der Subtraktionsoperator (-) berechnet die Differenz aus zwei Operanden. Der Subtraktionsoperator ist für die folgenden Typenpaare definiert (der Ausgabetyp wird ebenfalls gezeigt):
Da die Reihenfolge von Bedeutung ist, sind keine anderen Kombinationen zulässig, insbesondere Vektor - Punkt.
Bei numerischen Argumenten wird eine numerische Subtraktion durchgeführt. Bei geometrischen Argumenten werden Vektoroperationen durchgeführt.
Die folgende Tabelle zeigt Beispiele für den Subtraktionsoperator.
Ausdruck | Beispiel | Ergebnis |
---|---|---|
Punkt - Punkt | Point(0, 0, 0) - Point(10, 0, 0) | Vector_(-10.0, 0.0, 0.0, WorldFrame()) |
Punkt - Vektor | Point(0, 0, 0) - Vector(1, 0, 0) | Point_(-1.0, 0.0, 0.0, WorldFrame()) |
Vektor - Vektor | Vector_(1.0, -1.0, 0.0, WorldFrame()) |
Der Multiplikationsoperator (*) berechnet das Produkt aus zwei Operanden. Der Multiplikationsoperator ist für die folgenden Typen definiert (der Ausgabetyp wird ebenfalls gezeigt):
Bei einigen Operandentypen wirkt sich die Reihenfolge auf das Ergebnis, aber nicht auf den Ergebnistyp aus.
Bei numerischen Argumenten wird eine numerische Multiplikation durchgeführt. Bei Skalar * Vektor wird der Vektor skaliert. Bei Vektor * Vektor wird das Vektorprodukt berechnet. Bei Frame * Frame wird eine Kombination analog zur Matrixmultiplikation durchgeführt.
Die folgende Tabelle zeigt Beispiele für den Multiplikationsoperator.
Operandentyp | Beispiel | Ergebnis |
---|---|---|
Numerisch und Vektor | 3.0 * Vector(1,0,0) | Vector_(3.0, 0.0, 0.0, WorldFrame()) |
Vektor und Vektor | Vector(1,0,0) * Vector(0,1,0) | Vector_(0.0, 0.0, 1.0, WorldFrame()) |
Der Divisionsoperator (/) berechnet den Quotienten aus zwei Operanden. Der Divisionsoperator ist für die folgenden Typen definiert (der Ausgabetyp wird ebenfalls gezeigt):
Da die Reihenfolge von Bedeutung ist, werden die Vektor operanden nicht in umgekehrter Reihenfolge definiert.
Beachten Sie, dass eine numerische Division immer eine Zahl ergibt, auch wenn die Zahl eine Ganzzahl ist. Bei Vektor operationen erfolgt eine Skalierung des Vektors.
Die folgende Tabelle zeigt Beispiele für den Divisionsoperator.
Operandentyp | Beispiel | Ergebnis |
---|---|---|
Zahl und Ganzzahl | 42.0 / 6 | 7.0 |
Vektor und Ganzzahl | Vector(1,0,0)/3 | vector(0.33333, 0.0, 0.0, WorldFrame()) |
Die Potenzierungsoperator (^) berechnet den ersten Operanden potenziert mit dem zweiten Operanden. Der Potenzierungsoperator ist für die folgenden Typen definiert (der Ausgabetyp wird ebenfalls gezeigt):
Die Reihenfolge kann sich auf das Ergebnis, aber nicht auf den Ergebnistyp auswirken.
Das Ergebnis ist immer vom Typ Zahl.
Die folgende Tabelle zeigt Beispiele für den Potenzierungsoperator.
Operandentyp | Beispiel | |
---|---|---|
Ganzzahl und Ganzzahl | 6^2 | 36.0 |
Ganzzahl und Zahl | 6^2.0 | 36.0 |
Zahl und Zahl | 6.0^2.0 | 36.0 |