summaryrefslogtreecommitdiff
path: root/libs/ezsat/puzzle3d.scad
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ezsat/puzzle3d.scad')
-rw-r--r--libs/ezsat/puzzle3d.scad82
1 files changed, 82 insertions, 0 deletions
diff --git a/libs/ezsat/puzzle3d.scad b/libs/ezsat/puzzle3d.scad
new file mode 100644
index 00000000..693f8d85
--- /dev/null
+++ b/libs/ezsat/puzzle3d.scad
@@ -0,0 +1,82 @@
+
+gap = 30;
+layers = 0;
+variant = 1;
+
+module block(size_x, size_y, size_z, pos_x, pos_y, pos_z, idx)
+{
+ col = idx % 6 == 0 ? [ 0, 0, 1 ] :
+ idx % 6 == 1 ? [ 0, 1, 0 ] :
+ idx % 6 == 2 ? [ 0, 1, 1 ] :
+ idx % 6 == 3 ? [ 1, 0, 0 ] :
+ idx % 6 == 4 ? [ 1, 0, 1 ] :
+ idx % 6 == 5 ? [ 1, 1, 0 ] : [ 0, 0, 0 ];
+ translate([-2.5, -2.5, 0] * (100+gap)) difference() {
+ color(col) translate([pos_x, pos_y, pos_z] * (100 + gap))
+ cube([size_x, size_y, size_z] * (100+gap) - [gap, gap, gap], false);
+ if (layers > 0)
+ color([0.3, 0.3, 0.3]) translate([0, 0, layers * (100+gap)] - [0.5, 0.5, 0.5] * gap)
+ cube([5, 5, 5] * (100 + gap), false);
+ }
+}
+
+if (variant == 1) {
+ block(1,4,2,0,1,3,47);
+ block(1,4,2,4,0,0,72);
+ block(2,1,4,0,0,0,80);
+ block(2,1,4,3,4,1,119);
+ block(4,2,1,0,3,0,215);
+ block(4,2,1,1,0,4,224);
+ block(3,2,2,0,3,1,253);
+ block(3,2,2,2,0,2,274);
+ block(2,3,2,1,2,3,311);
+ block(2,3,2,2,0,0,312);
+ block(2,2,3,0,1,0,339);
+ block(2,2,3,3,2,2,380);
+}
+
+if (variant == 2) {
+ block(1,2,4,0,0,1,1);
+ block(1,2,4,4,3,0,38);
+ block(2,4,1,0,1,0,125);
+ block(2,4,1,3,0,4,154);
+ block(4,1,2,0,4,3,179);
+ block(4,1,2,1,0,0,180);
+ block(3,2,2,0,2,3,251);
+ block(3,2,2,2,1,0,276);
+ block(2,3,2,0,2,1,297);
+ block(2,3,2,3,0,2,326);
+ block(2,2,3,1,0,2,350);
+ block(2,2,3,2,3,0,369);
+}
+
+if (variant == 3) {
+ block(1,4,2,0,0,3,43);
+ block(1,4,2,4,1,0,76);
+ block(2,1,4,0,4,0,88);
+ block(2,1,4,3,0,1,111);
+ block(4,2,1,0,0,0,200);
+ block(4,2,1,1,3,4,239);
+ block(3,2,2,0,0,1,241);
+ block(3,2,2,2,3,2,286);
+ block(2,3,2,1,0,3,303);
+ block(2,3,2,2,2,0,320);
+ block(2,2,3,0,2,0,342);
+ block(2,2,3,3,1,2,377);
+}
+
+if (variant == 4) {
+ block(1,2,4,0,3,1,7);
+ block(1,2,4,4,0,0,32);
+ block(2,4,1,0,0,0,120);
+ block(2,4,1,3,1,4,159);
+ block(4,1,2,0,0,3,163);
+ block(4,1,2,1,4,0,196);
+ block(3,2,2,0,1,3,247);
+ block(3,2,2,2,2,0,280);
+ block(2,3,2,0,0,1,289);
+ block(2,3,2,3,2,2,334);
+ block(2,2,3,1,3,2,359);
+ block(2,2,3,2,0,0,360);
+}
+