Objekte verändern
Kombination
Im Abschnitt Mathematische Grundlagen wurde bereits beschrieben, wie du mehrere Objekte kombinieren kannst. Am häufigsten wirst du mehrer Objekte gleichzeitig darstellen. Zur Erinnerung: Es gibt folgende Möglichkeiten:
-
union{ object1(); object2() }
Beide Objekte werden dargestellt. -
difference{ object1(); object2() }
Aus dem 1. Objekt wird alles entfernt, was auch in Objekt 2 ist. -
intersection{ object1(); object2() }
Es wird nur das dargestellt, was zu beiden Objekten gehört.
Wenn du keine Angaben machst, wird implizit eine Vereinigung durchgeführt.
Transformation: Skalieren, Größe ändern
Du kannst im Nachhinein ein Objekt in alle drei Richtungen strecken oder stauchen und damit z.B. aus einem normalen Zylinder einen Zylinder mit elliptischer Grundfläche machen.
Beispiel (klicke jeweils auf den Quellcode, um die Darstellung zu sehen)
Aus einem Zylinder mit dem Radius 20 und der Höhe 1
cylinder(1,20,20);
wird ein Zylinder mit elliptischer Grundfläche der Länge 30 (da er in x-Richtung mit dem Faktor 1,5 gestreckt wird), der Breite 10 (da er in y-Richtung mit dem Faktor 0,5 gestaucht wird) und der Höhe 7,5 (da er in z-Richtung mit dem Faktor 7,5 gestreckt wird) durch
scale([1.5,0.5,7.5]) cylinder(1,20,20);
Einfacher ist es manchmal durch resize
die endgültigen Maße in x-, y- und z-Richtung anzugeben.
resize([80,20,1.5]) cylinder(1,20,20);
Transformation: Rotation (Drehung)
Du kannst Objekte um die Koordinatenachsen rotieren.
cube(10); // Würfel mit der Kantenlänge 10
rotate([45,0,0]) cube(10); // Würfel gedreht um 45° um x-Achse
rotate([0,45,0]) cube(10); // Würfel gedreht um 45° um y-Achse
rotate([0,0,45]) cube(10); // Würfel gedreht um 45° um z-Achse
rotate([45,45,0]) cube(10); // erst um x- und dann um y-Achse
rotate([45,45,45]) cube(10); // um alle A. (erst x, dann y, dann z)
Die Rotationsrichtung geben dir die Finger deiner rechten Hand an, wenn dein Daumen in Richtung der jeweiligen Achse zeigt.
Transformation: Translation (Verschiebung)
Du kannst Objekte in beliebige Richtungen parallel verschieben. Klicke auf die Zeile, um das jeweilige Objekt ein- oder auszublenden.
cube(10); // Würfel mit der Kantenlänge 10
translate([15,0,0]) cube(10); // in Richtung der x-Achse verschoben
translate([0,15,0]) cube(10); // in Richtung der y-Achse verschoben
translate([0,0,15]) cube(10); // in Richtung der z-Achse verschoben
translate([10,-5,15]) cube(10); // in alle Richtungen verschoben
Transformation: Spiegeln
Du kannst Objekte an den verschiedenen Ebenen des Koordinatensystem spiegeln. Klicke auf die Zeile, um das jeweilige Objekt ein- oder auszublenden. Zusätzlich wird das Ausgangsobjekt dargestellt, damit du es dir besser vorstellen kannst.
prisma(); // Aufruf von Modul Prisma
mirror([1,0,0]) prisma(); // in Richtung der x-Achse gespiegelt
mirror([0,1,0]) prisma(); // in Richtung der y-Achse gespiegelt
mirror([0,0,1]) prisma(); // in Richtung der z-Achse gespiegelt
mirror([1,1,0]) prisma(); // in Richtung der 1. Winkelhalbierenden
Das Prisma wird eigentlich erzeugt durch
module prisma(){
linear_extrude(2)polygon(points=[[0,0],[15,0],[12,8]]);
}