74 lines
1.5 KiB
OpenSCAD
74 lines
1.5 KiB
OpenSCAD
|
|
|||
|
length = 10;
|
|||
|
n = 5;
|
|||
|
|
|||
|
// Draw all geometry
|
|||
|
//translate([0,0]) polygon(ngon(n, length));
|
|||
|
|
|||
|
translate([0,0]) hollow_ngon(n, length);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// Simple list comprehension for creating N-gon vertices
|
|||
|
function ngon(num, r) =
|
|||
|
[for (i=[0:num-1], a=i*360/num) [ r*cos(a), r*sin(a) ]];
|
|||
|
|
|||
|
|
|||
|
|
|||
|
module hollow_ngon(num, r, width = 1) {
|
|||
|
difference() {
|
|||
|
translate([0,0]) polygon(ngon(num, r));
|
|||
|
translate([0,0]) polygon(ngon(num, r-width));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
l = 10;
|
|||
|
|
|||
|
|
|||
|
CubePoints = [
|
|||
|
[ 0, 0, 0 ], //0
|
|||
|
[ 10, 0, 0 ], //1
|
|||
|
[ 10, 7, 0 ], //2
|
|||
|
[ 0, 7, 0 ], //3
|
|||
|
[ 0, 0, 5 ], //4
|
|||
|
[ 10, 0, 5 ], //5
|
|||
|
[ 10, 7, 5 ], //6
|
|||
|
[ 0, 7, 5 ]]; //7
|
|||
|
|
|||
|
CubeFaces = [
|
|||
|
[0,1,2,3], // bottom
|
|||
|
[4,5,1,0], // front
|
|||
|
[7,6,5,4], // top
|
|||
|
[5,6,2,1], // right
|
|||
|
[6,7,3,2], // back
|
|||
|
[7,4,0,3]]; // left
|
|||
|
|
|||
|
polyhedron( CubePoints, CubeFaces );
|
|||
|
|
|||
|
//The coordinates of the 12 additional vertices are (0, ±(1 + h), ±(1 − h2)), (±(1 + h), ±(1 − h2), 0) and (±(1 − h2), 0, ±(1 + h)).
|
|||
|
// (0, ±(1 + h), ±(1 − h2)),
|
|||
|
// (0, (1 + h), (1 − h2) ),
|
|||
|
// (±(1 + h), ±(1 − h2), 0)
|
|||
|
// (±(1 − h2), 0, ±(1 + h))
|
|||
|
|
|||
|
steps = 50;
|
|||
|
sides = 5;
|
|||
|
|
|||
|
|
|||
|
vert = [
|
|||
|
|
|||
|
]
|
|||
|
|
|||
|
|
|||
|
points = [
|
|||
|
// first expression generating the points in the positive Y quadrant
|
|||
|
//(0, ±(1 + h), ±(1 − h2)),
|
|||
|
for (a = [0 : sides]) [ a, 10 * sin(a * 360 / steps) + 10 ],
|
|||
|
// second expression generating the points in the negative Y quadrant
|
|||
|
for (a = [steps : -1 : 0]) [ a, 10 * cos(a * 360 / steps) - 20 ],
|
|||
|
// additional list of fixed points
|
|||
|
[ 10, -3 ], [ 3, 0 ], [ 10, 3 ]
|
|||
|
];
|
|||
|
|
|||
|
polygon(points);
|