mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-20 05:21:38 +02:00
refactor formula
This commit is contained in:
@@ -11,18 +11,22 @@
|
|||||||
module stereographic_extrude(shadow_side_leng, convexity = 1) {
|
module stereographic_extrude(shadow_side_leng, convexity = 1) {
|
||||||
half_side_length = shadow_side_leng / 2;
|
half_side_length = shadow_side_leng / 2;
|
||||||
outer_sphere_r = half_side_length / 3;
|
outer_sphere_r = half_side_length / 3;
|
||||||
a = atan(sqrt(2) * half_side_length / (2 * outer_sphere_r));
|
|
||||||
inner_sphere_r = outer_sphere_r * sin(a);
|
denominator = sqrt(4 * outer_sphere_r ^ 2 + 2 * half_side_length ^ 2);
|
||||||
|
cosa = 2 * outer_sphere_r / denominator;
|
||||||
|
sina = sqrt(2) * half_side_length / denominator;
|
||||||
|
|
||||||
|
inner_sphere_r = outer_sphere_r * sina;
|
||||||
|
|
||||||
intersection() {
|
intersection() {
|
||||||
translate([0, 0, outer_sphere_r])
|
translate([0, 0, outer_sphere_r])
|
||||||
difference() {
|
difference() {
|
||||||
sphere(outer_sphere_r);
|
sphere(outer_sphere_r);
|
||||||
sphere(outer_sphere_r / 2 + inner_sphere_r / 2);
|
sphere((outer_sphere_r + inner_sphere_r) / 2);
|
||||||
|
|
||||||
translate([0, 0, outer_sphere_r / 2])
|
translate([0, 0, outer_sphere_r / 2])
|
||||||
linear_extrude(outer_sphere_r)
|
linear_extrude(outer_sphere_r)
|
||||||
circle(inner_sphere_r * cos(a));
|
circle(inner_sphere_r * cosa);
|
||||||
}
|
}
|
||||||
|
|
||||||
linear_extrude(outer_sphere_r * 2, scale = 0.01, convexity = convexity)
|
linear_extrude(outer_sphere_r * 2, scale = 0.01, convexity = convexity)
|
||||||
|
Reference in New Issue
Block a user