1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-01-17 06:08:31 +01:00
dotSCAD/src/crystal_ball.scad
2022-06-06 13:11:46 +08:00

52 lines
1.1 KiB
OpenSCAD

/**
* crystal_ball.scad
*
* @copyright Justin Lin, 2017
* @license https://opensource.org/licenses/lgpl-3.0.html
*
* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-crystal_ball.html
*
**/
use <__comm__/__nearest_multiple_of_4.scad>
use <__comm__/__frags.scad>
use <shape_arc.scad>
use <shape_pie.scad>
use <ring_extrude.scad>
module crystal_ball(radius, theta = 360, phi = 180, thickness) {
phis = is_num(phi) ? [0, phi] : phi;
frags = __frags(radius);
angle = [90 - phis[1], 90 - phis[0]];
shape_pts = is_undef(thickness) ?
shape_pie(
radius,
angle ,
$fn = __nearest_multiple_of_4(frags)
) :
shape_arc(
radius,
angle,
width = thickness,
width_mode = "LINE_INWARD",
$fn = __nearest_multiple_of_4(frags)
);
ring_extrude(
shape_pts,
angle = theta,
radius = 0,
$fn = frags
);
// hook for testing
test_crystal_ball_pie(shape_pts);
}
// override it to test
module test_crystal_ball_pie(shape_pts) {
}