^
brixelweb.de OpenSCAD-Menu
[ https://openscad.org/ ]


Kombinationen von rotate und translate

Mit "rotate" kann das komplette Koordinatensystem gedreht oder geschwenkt werden und über "translate" wird ein Element im Raum aller Achsen plaziert. Es werden jeweils die Werte für X, Y und Z angegeben.


// kombi10.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([45,0,0]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([90,0,0]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);   

Es werden drei Kegel in unterschiedlichen Farben und Drehwinkeln erstellt. Deren Grundfläche steht im Nullpunkt des Koordinatensystems.

Der türkise Kegel steht unverändert, also nicht gedreht oder versetzt. Der Schokoladenbraune wird um 45° und der Olivfarbene um ganze 90° gedreht. Dies bezieht sich je auf die erste Position im rotate-Befehl: rotate([45,0,0]) und rotate([90,0,0]) = der X-Achse.


// kombi10m.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([-45,0,0]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([-90,0,0]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);   

Auch hier steht der türkise Kegel original, der Schokoladenbraune um 45° geschwenkt und der Olivfarbene um ganz 90° gedreht. Dieses Mal wurden negative Werte verwendet für die erste Position im rotate-Befehl : rotate([-45,0,0]) und rotate([-90,0,0]) = der X-Achse.

kombi001a.scad = Bei positivem Winkel-Wert wird das Element gegen den Uhrzeigersinn um die X-Achse gedreht.

kombi001b.scad = Dagegen bei negativem Winkel-Wert wird das Element im Uhrzeigersinn um die X-Achse gedreht.


Wie funktioniert der rotate-Befehl?

Betrachten wir ein Kegel nach dem anderen:

Beginnen wir mit Türkis:

// kombi001a.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

Alle 3 Achsen entsprechen dem Koordinatensystem, da hier keine Rotation stattfindet = rotate([0,0,0])


Anders sieht es bereits beim Schokofarbenen Kegel aus:

// kombi001b.scad
$fn=100;

rotate([45,0,0]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);

Hier befindet sich in der ersten Position des rotate-Befehls ein Winkelwert. Dieser bezieht sich auf die X-Achse = rotate([45,0,0]).

Um diese X-Achse wird nun alles um 45 Grad gedreht: die grüne Y-Achse und die blaue Z-Achse!

Die alten Achsen (punktiert) verschieben sich um den Wert 45 Grad (gelbe Pfeile) auf die neuen durchgezogenen Achsen.


Ebenso sieht es beim Olivfarbenen Kegel aus:

// kombi001c.scad
$fn=100;

rotate([90,0,0]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);

Hier befindet sich in der ersten Position des rotate-Befehls ein Winkelwert. Dieser bezieht sich auf die X-Achse = rotate([90,0,0]).

Erneut wird um diese X-Achse alles gedreht, diesmal um 90 Grad: die grüne Y-Achse und die blaue Z-Achse!

Die alten Achsen (punktiert) verschieben sich um den Wert 90 Grad (gelbe Pfeile) auf die neuen durchgezogenen Achsen. Im Prinzip werden die Y und Z Achsen getauscht.


Änderung der zweite Stelle von rotate, die Y-Werte

Ändern wir die zweite Position von rotate([0,0,0]) , wirkt sich diese auf die Y-Achse aus. Nun dreht sich alles um sie herum.

// kombi20.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,45,0]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,90,0]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0); 

Diesmal wird die Y-Achse als Drehpunkt verwendet. Alle drei Kegel haben nun die gleiche Y-Achse, wie vorhin die Z. Der Türkise Kegel hat Zt und Xt als weitere Achsen, so auch der Schokofarbene mit Zs und Xs. Der Olivefarbene hat dafür Zo und Xo als Achsen.

Türkiser Kegel: seine Achsen sind Xt, Y und Zt. Für den Schoko gilt Xs, Y, Zs und für die Olive bleibt noch Xo, Y, Zo.

Bei Türkis und Olive tauschen sich wieder die X und Z Achsen.


Auch mit negativen Werten kann rotate([0,-45,0]) aufgerufen werden.

// kombi20m.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,-45,0]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,-90,0]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0); 

Alle drei Kegel richten sich nun im Uhrzeigersinn um die Y-Achse aus.


Änderung der Z-Werte

Bei Ändern der dritten Werte bei rotate([0,0,45]) dreht sich alles um die Z-Achse.

// kombi30.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,0,45]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,0,90]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0); 

Alle drei Kegel stehen an der gleichen Position und drehen sich nur um die eigene Z-Achse. Da dies keine Auswirkung auf Bewegungsänderungen hat, entsteht die Mischfarbe.


Bei Ändern der dritten Werte in negative Zahlen rotate([0,0,-45]) dreht sich weiterhin alles nur um die Z-Achse. Jedoch in umgekehrter Richtung ...

// kombi30m.scad
$fn=100;

rotate([0,0,0]) translate([0,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,0,-45]) translate([0,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,0,-90]) translate([0,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0); 

Alle drei Kegel stehen an der gleichen Position und drehen sich nur um die eigene Z-Achse. Da dies keine Auswirkung auf Bewegungsänderungen hat, entsteht die Mischfarbe.

Kombination mit translate

Nun kommt translate noch hinzu. Es ist am Einfachsten, wenn rotate vor translate ausgeführt wird, da folglich eine Achse im Original-Koordinatensystem vorhanden bleibt.
Wie in unserem Beispiel die rote X-Achse

// kombi11.scad
$fn=100;

rotate([0,0,0]) translate([10,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([45,0,0]) translate([13,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([90,0,0]) translate([16,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Einsatz von translate: der türkise Kegel wurde an der ersten Position (X-Achse) um 10 versetzt, der Schoko um 13 und der Olive um 16.

rotate([?,0,0]) und translate([?,0,0])


Hier wird nun bei translate die zweite Stelle, also die Y-Achse, angesprochen:

// kombi12.scad
$fn=100;

rotate([0,0,0]) translate([0,10,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([45,0,0]) translate([0,13,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([90,0,0]) translate([0,16,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0); 
   

Hoppla, was kommt hier heraus?
Ganz einfach: beim türkisen Kegel sitzt der Schwenkpunkt bei Null Grad, also auf der Y-Achse selbst. Beim Schoko wird mittels rotate 45 auf 45 Grad und beim Oliven um 90° auf der Y-Achse geschwenkt. Beim Schwenken wird ebenso das gesamte Koordinatensystem für den einzelnen Kegel mitgedreht!

rotate([?,0,0]) und translate([0,?,0])


Jetzt ändern wir die dritte Stelle bei translate, also die Z-Achse:

// kombi13.scad
$fn=100;

rotate([0,0,0]) translate([0,0,10]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([45,0,0]) translate([0,0,13]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([90,0,0]) translate([0,0,16]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

rotate([?,0,0]) und translate([0,0,?])


Der Startpunkt von Türkis liegt 10 hoch auf der Z-Achse.

Beim Schoko wird erst um 45° gedreht um die X-Achse, dann auf der neuen Z-Achse um 13 verfahren.

Beim Oliven sieht es schon anders aus: hier wird um die X-Achse um 90° gekippt. Die alte Y-Achse wird nun die neue Z-Achse, auf der um 16 verfahren wird. Ebenso wird die alte Z-Achse die neue Y!


Zweite Stelle bei rotate ausprobieren

Nun variieren wir die zweite Stelle von rotate, die Y-Achse.

// kombi21.scad
$fn=100;

rotate([0,0,0]) translate([10,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,45,0]) translate([13,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,90,0]) translate([16,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Die roten X-Achsen und die blauen Z-Achsen werden mit den angegebenen Winkeln mitgeschwenkt. Die gelben Punkte markieren wiederum die Abstände zum Nullpunkt.

rotate([0,?,0]) und translate([?,0,0])


Nun variieren wir die zweite Stelle von translate, die Y-Achse.

// kombi22.scad
$fn=100;

rotate([0,0,0]) translate([0,10,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,45,0]) translate([0,13,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,90,0]) translate([0,16,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Es sieht fast so aus wie bei kombi002a.scad. Mit dem eigentlichen Unterschied, dass die Objekte sich um die Y-Achse drehen.

rotate([0,?,0]) und translate([0,?,0])


Nun kommt die dritte Stelle von translate, die Z-Achse.

// kombi23.scad
$fn=100;

rotate([0,0,0]) translate([0,0,10]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,45,0]) translate([0,0,13]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,90,0]) translate([0,0,16]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Es sieht fast so aus wie bei kombi002c.scad. Mit dem kleinenn Unterschied, dass sich die Objekte diesmal um die Z-Achse drehen.

rotate([0,?,0]) und translate([0,0,?])


Dritte Stelle bei rotate ausprobieren

Nun variieren wir die dritte Stelle von rotate, die Z-Achse.

// kombi31.scad
$fn=100;

rotate([0,0,0]) translate([10,0,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,0,45]) translate([13,0,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,0,90]) translate([16,0,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

rotate([0,0,?]) und translate([?,0,0])


Hier werden die X und Y-Achsen um die jeweilige Gradzahl um die Z-Achse gedreht.

rotate([0,0,?]) und translate([?,0,0])


Nun kommt die zweite Stelle von translate, die Z-Achse.

// kombi32.scad
$fn=100;

rotate([0,0,0]) translate([0,10,0]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,0,45]) translate([0,13,0]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,0,90]) translate([0,16,0]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Wie bei bei kombi31.scad, jedoch wird der Start auf die Y-Achse gelegt.

rotate([0,0,?]) und translate([0,?,0])


Nun variieren wir die dritte Stelle von rotate und ebenso von translate, die Z-Achsen.

// kombi33.scad
$fn=100;

rotate([0,0,0]) translate([0,0,10]) 
color("Turquoise") cylinder(h=10, r1=1, r2=0);

rotate([0,0,45]) translate([0,0,13]) 
color("Chocolate") cylinder(h=10, r1=1, r2=0);   

rotate([0,0,90]) translate([0,0,16]) 
color("Olive") cylinder(h=10, r1=1, r2=0);
   

Hier rotieren alle Objekte um ihre eigene Achse, man sieht also nichts. Bis auf die unterschiedlichen Höhenangaben.....

rotate([0,0,?]) und translate([0,0,?])







www.brixelweb.de