1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-01-17 22:28:16 +01:00

refactored

This commit is contained in:
Justin Lin 2017-05-25 09:46:36 +08:00
parent 541cdf66a5
commit a90c2410fb

View File

@ -13,30 +13,8 @@
include <__private__/__frags.scad>; include <__private__/__frags.scad>;
include <__private__/__is_vector.scad>; include <__private__/__is_vector.scad>;
include <__private__/__ra_to_xy.scad>; include <__private__/__ra_to_xy.scad>;
include <__private__/__shape_pie.scad>;
module pie(radius, angle) { module pie(radius, angle) {
polygon(__shape_pie(radius, angle));
a_step = 360 / __frags(radius);
angles = __is_vector(angle) ? angle : [0, angle];
m = floor(angles[0] / a_step) + 1;
n = floor(angles[1] / a_step);
half_a_step = a_step / 2;
leng = radius * cos(half_a_step);
function edge_r_begin(a) =
leng / cos((m - 0.5) * a_step - a);
function edge_r_end(a) =
leng / cos((n + 0.5) * a_step - a);
points = concat(
[[0, 0], __ra_to_xy(edge_r_begin(angles[0]), angles[0])],
m > n ? [] : [for(i = [m:n]) __ra_to_xy(radius, a_step * i)],
angles[1] == a_step * n ? [] : [__ra_to_xy(edge_r_end(angles[1]), angles[1])]
);
polygon(points);
} }