i

Mathematische Grundlagen

Um das Folgende ein wenig besser zu verstehen, benötigst du einige mathematische Grundlagen. Vieles ist dir vermutlich schon bekannt oder noch bekannt, aber es schadet nicht, wenn du noch einmal einen Überblick gewinnst.

3D-Koordinatensystem

Wie schon beschrieben, haben wir durch eine dritte Achse ein dreidimensionales "rechtshändiges Koordinatensystem"

Daumen, Zeigefinger und Mittelfinger der rechten Hand sind im rechten Winkel voneinander abgespreizt. Der Mittelfinger zeigt nach oben.[1]

Aus der Mittelstufe kennst du bereits die Angabe eine Punktes im Koordinatensystem als Wertepaar - z.B. (3,5) für 3 Einheiten auf der x-Achse und 5 Einheiten auf der y-Achse. Man sagt dazu auch Tupel.

Nun wird aus den 2-Tupel durch Hinzufügen der z-Koordinate ein 3-Tupel.
So beschreibt der Code translate([10,-5,12]) cube(7); die Verschiebung des nachfolgenden Objekts (ein Würfel mit der Kantenlänge 7) um 10 Einheiten in x-Richtung und um 5 Einheiten in negativer y-Richtung und um 12 Einheiten in z-Richtung.
Man bezeichnet dabei [10,-5,12] als Vektor (du kennst den Begriff vermutlich schon aus der Geometrie oder aus der Physik).

Mehrere Objekte kombinieren

Tauchen mehrere Objekte in einer Darstellung auf, scheint das zunächst einmal kein Problem:

Würfel und schräg verlaufender Zylinder überlagern sich nicht[2]

Diese Situation ist vergleichbar mit zwei Mengen in der Mathematik, die keine gemeinsamen Elemente haben (man sagt: Die Mengen sind disjunkt).

Zwei disjunkte Menge als Elipsen dargestellt[3]

Doch was passiert, wenn die Objekte gemeinsame Punkte, bzw. die Mengen gemeinsame Elemente haben? Im Wesentlichen unterscheidet man folgende Situationen:

Vereinigungsmenge (union) A∪B

Zwei nicht disjunkte Mengen als Vereingung dargestellt[4]

Das Symbol wird gelesen als "vereinigt mit" und beschreibt alle Elemente (Punkte) die in der Menge A oder in der Menge B (oder in beiden Mengen) enthalten sind. Es entspricht dem boolschen Operator or bzw. wird in in der Aussagenlogik dargestellt als A B.

Vereinigt man die beiden Objekte oben miteinander, dann sieht das folgendermaßen aus:

Würfel und schräg verlaufender Zylinder überlagern sich und werden beide dargestellt[5]

Differenzmenge (difference) A\B

Zwei nicht disjunkte Mengen als Differenz dargestellt[6]

Das Symbol \ wird gelesen als "ohne" und beschreibt alle Elemente (Punkte) die in der Menge A aber nicht in der Menge B enthalten sind. Es entspricht dem boolschen Operator and not bzw. wird in der Aussagenlogik dargestellt als A ∧¬ B bzw. A B.

Bildet man die Differenz der beiden Objekte oben, dann sieht das folgendermaßen aus:

Würfel und schräg verlaufender Zylinder überlagern sich und werden beide dargestellt[7]

Schnittmenge (intersection) A∩B

Zwei nicht disjunkte Mengen als Schnittmenge dargestellt[8]

Das Symbol wird gelesen als "geschnitten mit" und beschreibt alle Elemente (Punkte) die in der Menge A und zugleich in der Menge B enthalten sind. Es entspricht dem boolschen Operator and bzw. wird in der Aussagenlogik dargestellt als A B.

Schneidet man beide Objekte oben, dann sieht das folgendermaßen aus:

Würfel und schräg verlaufender Zylinder überlagern sich und es werden nur die Punkte dargestellt, die in beiden Objekten enthalten sind.[9]

Aufgabe: Umsetzung in OpenSCAD

Die entsprechenden Funktionen in OpenSCAD lauten union(){...}, difference(){...} und intersection(){...}.

Wenn du in OpenSCAD mehrere Objekte beschreibst, dann wird implizit eine Vereinigung durchgeführt. Trotzdem kann es manchmal sinnvoll sein, "union" zu verwenden - z.B. wenn du innerhalb einer Differenz als "Subtrahend" eine Vereinigung festlegen möchtest.

Im folgenden siehst du einen Quelltext, der dir eine Übersicht über alle Kombinationsmöglichkeiten liefert. Lasse ihn dir in OpenSCAD darstellen, damit du die Objekte aus unterschiedlichen Perspektiven anschauen kannst.

// Die Objekte in getrennter Darstellung
translate([0,0,40])
union(){
    color("#0077b6")cube(size=10, center=true);
    translate([13,0,0])rotate([40,40,0])color("#fcca00")cylinder(18,2,2, center=true);
}

// Vereinigung
translate([0,0,20])
union(){
    color("#0077b6")cube(size=10, center=true);
    rotate([40,40,0])color("#fcca00")cylinder(18,2,2, center=true);
}

// Differenz
difference(){
    color("#0077b6")cube(size=10, center=true);
    rotate([40,40,0])color("#fcca00")cylinder(18,2,2, center=true);
}

// Schnittmenge
translate([0,0,-20])
intersection(){
    color("#0077b6")cube(size=10, center=true);
    rotate([40,40,0])color("#fcca00")cylinder(18,2,2, center=true);
}

Quellen

Suche

v
14.2.3.2
dev.inf-schule.de/projekte/3d_druck/grundlage_cad/grundlagen_mathematik
dev.inf-schule.de/14.2.3.2

Rückmeldung geben