Begriffe vorab
- Operator: Zeichen für eine Rechen- oder Vergleichsoperation.
- Modulo: Rest einer Division (%).
- Skalarprodukt: Ergebnis der Multiplikation zweier Vektoren.
- Grad: Winkeleinheit, die OpenSCAD in trigonometrischen Funktionen nutzt.
- Norm: Länge eines Vektors.
Rechenoperatoren
+ - * / % ^: Addition, Subtraktion, Multiplikation, Division, Modulo und Potenz. Der Potenzoperator ^ erfordert laut Doku Version 2021.01 oder neuer. Das Minuszeichen funktioniert auch als Vorzeichen. Modulo ist praktisch für Muster: Eine Zahl modulo 2 ist 0 bei geraden und 1 bei ungeraden Zahlen. Bitoperationen (| & << >> ~) nennt die Doku nur für Entwicklungs-Snapshots.
Vergleich und Logik
< <= == != >= > sowie && || !. Nicht-Boolesche Werte werden vor der Auswertung in Boolesche umgewandelt. Einzelheiten laut Doku: Zeichenketten werden alphabetisch verglichen, true > false, Vektoren sind nur bei vollständiger Gleichheit gleich, verschiedene Typen sind ungleich ([1] != 1), undef ist nur sich selbst gleich, und nan ist nichts gleich.
Vektoren und Matrizen
- Vektor mit Zahl: jedes Element wird multipliziert oder geteilt.
- Vektor mit Vektor: Addition und Subtraktion elementweise.
- Zwei einfache Vektoren multipliziert ergeben das Skalarprodukt.
- Matrizenmultiplikation folgt der linearen Algebra und ist nicht kommutativ.
Mathematische Funktionen
- Winkelfunktionen in Grad:
sin, cos, tan, asin, acos, atan;atan2(y, x)liefert Winkel im Bereich −180 < Winkel ≤ 180. - Grundfunktionen:
abs, sign, sqrt, pow, exp, floor, ceil, round(rundet „weg von null“:round(5.5)ergibt 6,round(-5.5)ergibt −6),ln(natürlich),log(Basis 10). - Mehrere Werte:
minundmaxmit mehreren Argumenten oder einem Vektor,norm(Euklidische Länge),len(Anzahl der Elemente),cross(Kreuzprodukt),concat(Vektoren aneinanderhängen). - Weitere:
lookup(Tabelle mit linearer Interpolation),rands(Zufallszahlen).
// Punkte auf einem Kreis mit Winkelfunktionen (Winkel in Grad!)
r = 20;
for (i = [0 : 7]) {
w = i * 45;
translate([r * cos(w), r * sin(w), 0]) sphere(r = 2, $fn = 16);
}
// Abstand zweier Punkte mit norm() und Hilfsausgabe
a = [0, 0, 0];
b = [3, 4, 12];
echo(laenge = norm(b - a)); // 13
echo(gerundet = round(5.5), runter = floor(-2.5), rest = 17 % 5);
// Linie zwischen a und b als dünner Zylinder (Länge per norm)
// Ausrichtung per Winkel aus atan2
translate(a)
rotate([0, 0, atan2(b.y - a.y, b.x - a.x)])
rotate([0, 90 - asin(b.z / norm(b - a)), 0])
cylinder(h = norm(b - a), r = 0.5, $fn = 12);
Die Kreispunkte entstehen mit cos und sin – beide erwarten Grad, nicht Bogenmaß. Das Beispiel ergibt echo-Ausgaben mit 13, 6, −3 und 2.
Alle Winkel in OpenSCAD sind Grad. Wer Bogenmaß-Formeln übernimmt, muss umrechnen.
Zum Selbermachen
- Verteile zwölf Kugeln gleichmäßig auf einem Kreis.
- Berechne mit norm() die Diagonale eines Quaders und gib sie per echo aus.
Verwandte Themen
OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.
Prüfstatus: Belegt (Stand 1. Oktober 2026): Operatoren (inkl. ^ ab 2021.01), Vergleichsregeln, logische Operatoren, Vektor- und Matrixrechnung sowie die Funktionen (Grad, atan2-Bereich, round weg von null, log zur Basis 10, norm, cross, concat, lookup, rands) wurden gegen die Seiten „Mathematical Operators“ und „Mathematical Functions“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.
Quellen
- OpenSCAD User Manual – Mathematical Operators (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Mathematical_Operators)
- OpenSCAD User Manual – Mathematical Functions (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Mathematical_Functions)
- OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)