1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-19 04:51:26 +02:00

added two shapes

This commit is contained in:
Justin Lin
2017-05-06 13:50:49 +08:00
parent 94e32df7ef
commit 3dc1877dbd
2 changed files with 52 additions and 0 deletions

22
src/shape_pentagram.scad Normal file
View File

@@ -0,0 +1,22 @@
function shape_pentagram(r) =
[
// shape points
[
[0, 1], [-0.224514, 0.309017],
[-0.951057, 0.309017], [-0.363271, -0.118034],
[-0.587785, -0.809017], [0, -0.381966],
[0.587785, -0.809017], [0.363271, -0.118034],
[0.951057, 0.309017], [0.224514, 0.309017]
] * r,
// triangles
[
[0, 1, 9],
[2, 3, 1],
[4, 5, 3],
[6, 7, 5],
[8, 9, 7],
[1, 3, 5],
[1, 5, 7],
[1, 7, 9]
]
];

30
src/shape_square.scad Normal file
View File

@@ -0,0 +1,30 @@
function shape_square(size, corner_r = 0) =
let(
frags = $fn > 0 ?
($fn >= 3 ? $fn : 3) :
max(min(360 / $fa, corner_r * 6.28318 / $fs), 5),
remain = frags % 4,
corner_frags = (remain / 4) > 0.5 ? frags - remain + 4 : frags - remain,
step_a = 360 / corner_frags,
x = len(size) == undef ? size : size[0],
y = len(size) == undef ? size : size[1],
half_x = x / 2,
half_y = y / 2,
half_w = half_x - corner_r,
half_h = half_y - corner_r,
shape_pts = concat(
[[half_x, -half_h], [half_x, half_h]],
[for(a = [step_a:step_a:90 - step_a]) [corner_r * cos(a) + half_w, corner_r * sin(a) + half_h]],
[[half_w, half_y], [-half_w, half_y]],
[for(a = [90 + step_a:step_a:180 - step_a]) [corner_r * cos(a) - half_w, corner_r * sin(a) + half_h]],
[[-half_x, half_h], [-half_x, -half_h]],
[for(a = [180 + step_a:step_a:270 - step_a]) [corner_r * cos(a) - half_w, corner_r * sin(a) - half_h]],
[[-half_w, -half_y], [half_w, -half_y]],
[for(a = [270 + step_a:step_a:360 - step_a]) [corner_r * cos(a) + half_w, corner_r * sin(a) - half_h]]
),
triangles = [for(i = [1:len(shape_pts) - 2]) [0, i, i + 1]]
)
[
shape_pts,
triangles
];