mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-21 05:52:16 +02:00
reduce deps
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
function __shape_arc(radius, angle, width, width_mode = "LINE_CROSS") =
|
|
||||||
let(
|
|
||||||
w_offset = width_mode == "LINE_CROSS" ? [width / 2, -width / 2] :
|
|
||||||
width_mode == "LINE_INWARD" ? [0, -width] : [width, 0],
|
|
||||||
a_step = 360 / __frags(radius),
|
|
||||||
half_a_step = a_step / 2,
|
|
||||||
angles = is_num(angle) ? [0, angle] : angle,
|
|
||||||
m = floor(angles[0] / a_step) + 1,
|
|
||||||
n = floor(angles[1] / a_step),
|
|
||||||
r_outer = radius + w_offset[0],
|
|
||||||
r_inner = radius + w_offset[1],
|
|
||||||
points = concat(
|
|
||||||
// outer arc path
|
|
||||||
[__ra_to_xy(__edge_r_begin(r_outer, angles[0], a_step, m), angles[0])],
|
|
||||||
m > n ? [] : [
|
|
||||||
for(i = m; i <= n; i = i + 1) __ra_to_xy(r_outer, a_step * i)
|
|
||||||
],
|
|
||||||
angles[1] == a_step * n ? [] : [__ra_to_xy(__edge_r_end(r_outer, angles[1], a_step, n), angles[1])],
|
|
||||||
// inner arc path
|
|
||||||
angles[1] == a_step * n ? [] : [__ra_to_xy(__edge_r_end(r_inner, angles[1], a_step, n), angles[1])],
|
|
||||||
m > n ? [] : [
|
|
||||||
for(i = m; i <= n; i = i + 1)
|
|
||||||
let(idx = (n + (m - i)))
|
|
||||||
__ra_to_xy(r_inner, a_step * idx)
|
|
||||||
|
|
||||||
],
|
|
||||||
[__ra_to_xy(__edge_r_begin(r_inner, angles[0], a_step, m), angles[0])]
|
|
||||||
)
|
|
||||||
) points;
|
|
@@ -8,11 +8,8 @@
|
|||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
include <__comm__/__frags.scad>;
|
use <shape_arc.scad>;
|
||||||
include <__comm__/__ra_to_xy.scad>;
|
|
||||||
include <__comm__/__edge_r.scad>;
|
|
||||||
include <__comm__/__shape_arc.scad>;
|
|
||||||
|
|
||||||
module arc(radius, angle, width, width_mode = "LINE_CROSS") {
|
module arc(radius, angle, width, width_mode = "LINE_CROSS") {
|
||||||
polygon(__shape_arc(radius, angle, width, width_mode));
|
polygon(shape_arc(radius, angle, width, width_mode));
|
||||||
}
|
}
|
@@ -8,10 +8,36 @@
|
|||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
include <__comm__/__frags.scad>;
|
use <__comm__/__frags.scad>;
|
||||||
include <__comm__/__ra_to_xy.scad>;
|
use <__comm__/__ra_to_xy.scad>;
|
||||||
include <__comm__/__shape_arc.scad>;
|
use <__comm__/__edge_r.scad>
|
||||||
include <__comm__/__edge_r.scad>
|
|
||||||
|
|
||||||
function shape_arc(radius, angle, width, width_mode = "LINE_CROSS") =
|
function shape_arc(radius, angle, width, width_mode = "LINE_CROSS") =
|
||||||
__shape_arc(radius, angle, width, width_mode);
|
let(
|
||||||
|
w_offset = width_mode == "LINE_CROSS" ? [width / 2, -width / 2] :
|
||||||
|
width_mode == "LINE_INWARD" ? [0, -width] : [width, 0],
|
||||||
|
a_step = 360 / __frags(radius),
|
||||||
|
half_a_step = a_step / 2,
|
||||||
|
angles = is_num(angle) ? [0, angle] : angle,
|
||||||
|
m = floor(angles[0] / a_step) + 1,
|
||||||
|
n = floor(angles[1] / a_step),
|
||||||
|
r_outer = radius + w_offset[0],
|
||||||
|
r_inner = radius + w_offset[1],
|
||||||
|
points = concat(
|
||||||
|
// outer arc path
|
||||||
|
[__ra_to_xy(__edge_r_begin(r_outer, angles[0], a_step, m), angles[0])],
|
||||||
|
m > n ? [] : [
|
||||||
|
for(i = m; i <= n; i = i + 1) __ra_to_xy(r_outer, a_step * i)
|
||||||
|
],
|
||||||
|
angles[1] == a_step * n ? [] : [__ra_to_xy(__edge_r_end(r_outer, angles[1], a_step, n), angles[1])],
|
||||||
|
// inner arc path
|
||||||
|
angles[1] == a_step * n ? [] : [__ra_to_xy(__edge_r_end(r_inner, angles[1], a_step, n), angles[1])],
|
||||||
|
m > n ? [] : [
|
||||||
|
for(i = m; i <= n; i = i + 1)
|
||||||
|
let(idx = (n + (m - i)))
|
||||||
|
__ra_to_xy(r_inner, a_step * idx)
|
||||||
|
|
||||||
|
],
|
||||||
|
[__ra_to_xy(__edge_r_begin(r_inner, angles[0], a_step, m), angles[0])]
|
||||||
|
)
|
||||||
|
) points;
|
Reference in New Issue
Block a user