simple figures

This commit is contained in:
Thomas Lindner 2024-12-05 01:06:32 +01:00
commit 988c6d4869
4 changed files with 119 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
figures for Kurt Vonnegut's [GHQ|https://boardgamegeek.com/boardgame/422478/ghq]

118
ghq.scad Normal file
View 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

Binary file not shown.

BIN
ghq_25_5.stl Normal file

Binary file not shown.