simple figures
This commit is contained in:
commit
988c6d4869
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
|||
figures for Kurt Vonnegut's [GHQ|https://boardgamegeek.com/boardgame/422478/ghq]
|
118
ghq.scad
Normal file
118
ghq.scad
Normal file
|
@ -0,0 +1,118 @@
|
|||
$fs = 0.1;
|
||||
eps = 0.01;
|
||||
size = 15;
|
||||
height = 3;
|
||||
|
||||
translate([0, 2] * 1.1 * size)
|
||||
hq();
|
||||
for(x = [1:5])
|
||||
translate([x, 2] * 1.1 * size)
|
||||
infantry();
|
||||
for(x = [0:2])
|
||||
translate([x, 1] * 1.1 * size)
|
||||
infantry();
|
||||
for(x = [3:5])
|
||||
translate([x, 1] * 1.1 * size)
|
||||
infantry_armored();
|
||||
infantry_airborne();
|
||||
for(x = [1:3])
|
||||
translate([x, 0] * 1.1 * size)
|
||||
artillery();
|
||||
translate([4, 0] * 1.1 * size)
|
||||
artillery_armored();
|
||||
translate([5, 0] * 1.1 * size)
|
||||
artillery_heavy();
|
||||
|
||||
module hq() {
|
||||
linear_extrude(height)
|
||||
scale(size / 4)
|
||||
polygon([for(i = [0:10])
|
||||
[(i % 2 + 1) * sin(36 * i),
|
||||
(i % 2 + 1) * cos(36 * i)],
|
||||
]);
|
||||
}
|
||||
|
||||
module infantry() {
|
||||
linear_extrude(height) {
|
||||
polygon([
|
||||
[0, -size / 2],
|
||||
[size / 2, 0],
|
||||
[-size / 2, 0]
|
||||
]);
|
||||
translate([- size / 4, -eps])
|
||||
square(size / 2);
|
||||
}
|
||||
}
|
||||
|
||||
module infantry_armored() {
|
||||
linear_extrude(height)
|
||||
difference() {
|
||||
polygon([
|
||||
[0, -size / 2],
|
||||
[size / 2, size / 2],
|
||||
[-size / 2, size / 2]
|
||||
]);
|
||||
union() {
|
||||
translate([0, size / 6])
|
||||
circle(size / 15);
|
||||
translate([0, size / 3])
|
||||
circle(size / 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module infantry_airborne() {
|
||||
linear_extrude(height) {
|
||||
polygon([
|
||||
[0, -size / 2],
|
||||
[size / 2, 0],
|
||||
[-size / 2, 0]
|
||||
]);
|
||||
polygon([
|
||||
[size / 4, -eps],
|
||||
[0, size / 2],
|
||||
[-size / 4, -eps]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
module artillery() {
|
||||
linear_extrude(height) {
|
||||
translate([-size / 8, -size / 2])
|
||||
square([size / 4, size - eps]);
|
||||
translate([-size / 3, 0])
|
||||
square([2 * size / 3, size / 2]);
|
||||
}
|
||||
}
|
||||
|
||||
module artillery_armored() {
|
||||
linear_extrude(height)
|
||||
difference() {
|
||||
union() {
|
||||
translate([-size / 8, -size / 2])
|
||||
square([size / 4, size - eps]);
|
||||
translate([-size / 3, 0])
|
||||
square([2 * size / 3, size / 2]);
|
||||
}
|
||||
union() {
|
||||
translate([0, size / 6])
|
||||
circle(size / 15);
|
||||
translate([0, size / 3])
|
||||
circle(size / 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module artillery_heavy() {
|
||||
linear_extrude(height) {
|
||||
translate([-size / 8, -size / 2])
|
||||
square([size / 4, size - eps]);
|
||||
polygon([
|
||||
[0, -size / 4],
|
||||
[-size / 3, size / 4 + eps],
|
||||
[size / 3, size / 4 + eps]
|
||||
]);
|
||||
translate([-size / 3, size / 4])
|
||||
square([2 * size / 3, size / 4]);
|
||||
}
|
||||
}
|
BIN
ghq_15_3.stl
Normal file
BIN
ghq_15_3.stl
Normal file
Binary file not shown.
BIN
ghq_25_5.stl
Normal file
BIN
ghq_25_5.stl
Normal file
Binary file not shown.
Loading…
Reference in a new issue