ImplicitCAD/Examples/exampleMultmatrix.scad
2022-04-23 16:17:39 +02:00

37 lines
1.1 KiB
OpenSCAD

// Examples from
// https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#multmatrix
// CC-BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0/
angle=PI/4;
multmatrix(m = [ [cos(angle), -sin(angle), 0, 0],
[sin(angle), cos(angle), 0, 30],
[ 0, 0, 1, 0],
[ 0, 0, 0, 1]
] )
union() {
cylinder(r=10.0,h=10,center=false);
cube(size=[10,10,10],center=false);
}
// skew
M = [ [ 1 , 0 , 0 , 0 ],
[ 0 , 1 , 0.7, 0 ], // The "0.7" is the skew value; pushed along the y axis as z changes.
[ 0 , 0 , 1 , 0 ],
[ 0 , 0 , 0 , 1 ] ] ;
translate([-20,0,0])
multmatrix(M) { union() {
cylinder(r=10.0,h=10,center=false);
cube(size=[10,10,10],center=false);
} }
// same as previous example but using 3x4 matrix
N = [ [ 1 , 0 , 0 , 0 ],
[ 0 , 1 , 0.7, 0 ], // The "0.7" is the skew value; pushed along the y axis as z changes.
[ 0 , 0 , 1 , 0 ] ] ;
translate([20,0,0])
multmatrix(N) { union() {
cylinder(r=10.0,h=10,center=false);
cube(size=[10,10,10],center=false);
} }