mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-11 09:14:29 +02:00
rewrote to support cone
This commit is contained in:
@@ -12,33 +12,25 @@
|
|||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
function helix(radius, levels, level_dist,
|
function helix(radius, levels, level_dist, vt_dir = "SPI_DOWN", rt_dir = "CT_CLK") =
|
||||||
vt_dir = "SPI_DOWN", rt_dir = "CT_CLK") =
|
|
||||||
let(
|
let(
|
||||||
points = circle_path(radius),
|
r1 = len(radius) == undef ? radius : radius[0],
|
||||||
leng = len(points),
|
r2 = len(radius) == undef ? radius : radius[1],
|
||||||
_frags = $fn > 0 ?
|
_frags = $fn > 0 ?
|
||||||
($fn >= 3 ? $fn : 3) :
|
($fn >= 3 ? $fn : 3) :
|
||||||
max(min(360 / $fa, radius * 6.28318 / $fs), 5),
|
max(min(360 / $fa, r1 * 6.28318 / $fs), 5),
|
||||||
offset_z = level_dist / _frags,
|
h = level_dist * levels,
|
||||||
v_dir = (vt_dir == "SPI_DOWN" ? -1 : 1),
|
vt_d = vt_dir == "SPI_DOWN" ? 1 : -1,
|
||||||
r_dir = (rt_dir == "CT_CLK" ? 1 : -1)
|
rt_d = rt_dir == "CT_CLK" ? 1 : -1,
|
||||||
) [
|
r_diff = (r1 - r2) * vt_d,
|
||||||
for(l = [0:levels - 1])
|
h_step = level_dist / _frags * vt_d,
|
||||||
for(i = [0:leng - 1])
|
r_step = r_diff / (levels * _frags),
|
||||||
r_dir == 1 ? [ // COUNT_CLOCKWISE
|
a_step = 360 / _frags * rt_d,
|
||||||
points[i][0],
|
begin_r = vt_dir == "SPI_DOWN" ? r2 : r1,
|
||||||
points[i][1],
|
begin_h = vt_dir == "SPI_DOWN" ? h : 0
|
||||||
v_dir * (l * level_dist + offset_z * i)
|
|
||||||
] : ( // CLOCKWISE
|
|
||||||
i == 0 ? [
|
|
||||||
points[0][0],
|
|
||||||
points[0][1],
|
|
||||||
v_dir * l * level_dist
|
|
||||||
] : [
|
|
||||||
points[leng - i][0],
|
|
||||||
points[leng - i][1],
|
|
||||||
v_dir * (l * level_dist + offset_z * i)
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
|
[
|
||||||
|
for(i = [0:_frags * levels])
|
||||||
|
let(r = begin_r + r_step * i, a = a_step * i)
|
||||||
|
[r * cos(a), r * sin(a), begin_h - h_step * i]
|
||||||
];
|
];
|
Reference in New Issue
Block a user