32 lines
800 B
OpenSCAD
32 lines
800 B
OpenSCAD
// TODO remove/rename this file
|
|
/* Example usage:
|
|
for (i=mirror4XY(midpoint=[0,0,0], offsetX=90, offsetY=90)) {
|
|
translate(v=i)
|
|
something();
|
|
}
|
|
*/
|
|
function mirror4XY(midpoint, offsetX, offsetY) =
|
|
[[midpoint[0]+offsetX, midpoint[1]+offsetY, midpoint[2]],
|
|
[midpoint[0]-offsetX, midpoint[1]+offsetY, midpoint[2]],
|
|
[midpoint[0]-offsetX, midpoint[1]-offsetY, midpoint[2]],
|
|
[midpoint[0]+offsetX, midpoint[1]-offsetY, midpoint[2]]];
|
|
|
|
|
|
module align(a,b) {
|
|
|
|
echo("a", a);
|
|
echo("b", b);
|
|
rot_axis = cross(a,b);
|
|
|
|
if (rot_axis == 0) {
|
|
error("Can't align - provided vectors are parallel");
|
|
}
|
|
|
|
echo("rot_axis", rot_axis);
|
|
|
|
angle = acos(a*b/(norm(a)*norm(b)));
|
|
echo("angle", angle)
|
|
|
|
rotate(v=rot_axis, a=angle)
|
|
children(0);
|
|
} |