summaryrefslogtreecommitdiff
path: root/libs/ezsat/puzzle3d.scad
blob: 693f8d853c1e7cc696564932a01e0868608de48f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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);
}