mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-08 07:46:39 +02:00
add shell
This commit is contained in:
@@ -2,47 +2,34 @@ use <experimental/tile_penrose3.scad>;
|
|||||||
use <experimental/ptf_c2sphere.scad>;
|
use <experimental/ptf_c2sphere.scad>;
|
||||||
use <ptf/ptf_rotate.scad>;
|
use <ptf/ptf_rotate.scad>;
|
||||||
use <hull_polyline3d.scad>;
|
use <hull_polyline3d.scad>;
|
||||||
|
use <surface/sf_thickenT.scad>;
|
||||||
|
use <polyhedron_hull.scad>;
|
||||||
|
use <util/every.scad>;
|
||||||
|
|
||||||
radius = 10;
|
basket_radius = 40;
|
||||||
n = 5;
|
radius_in_plane = basket_radius / 1.25 / cos(36);
|
||||||
line_diameter = .5;
|
n = 4;
|
||||||
$fn = 3;
|
line_diameter = 2;
|
||||||
|
$fn = 4;
|
||||||
|
|
||||||
penrose_basket(radius, n, line_diameter);
|
penrose_basket(basket_radius, radius_in_plane, n, line_diameter);
|
||||||
|
|
||||||
module penrose_basket(radius, n, line_diameter) {
|
module penrose_basket(basket_radius, radius_in_plane, n, line_diameter) {
|
||||||
cos36 = cos(36);
|
tris = tile_penrose3(n);
|
||||||
sin36 = sin(36);
|
|
||||||
|
|
||||||
obtuse = [
|
|
||||||
[2 * cos36 ^ 2, 2 * cos36 * sin36],
|
|
||||||
[1, 0],
|
|
||||||
[0, 0]
|
|
||||||
];
|
|
||||||
|
|
||||||
acute = [
|
|
||||||
[4 * cos36 ^ 2 - 1, 0],
|
|
||||||
[2 * cos36 ^ 2, 2 * cos36 * sin36],
|
|
||||||
[1, 0]
|
|
||||||
];
|
|
||||||
|
|
||||||
tris = tile_penrose3(n, [
|
|
||||||
for(i = [0:4])
|
|
||||||
each [
|
|
||||||
["OBTUSE",
|
|
||||||
[for(p = obtuse) ptf_rotate(p, i * 72)]
|
|
||||||
],
|
|
||||||
["ACUTE",
|
|
||||||
[for(p = acute) ptf_rotate(p, i * 72)]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]);
|
|
||||||
|
|
||||||
r = radius * 2 * cos36;
|
|
||||||
for(t = tris) {
|
for(t = tris) {
|
||||||
hull_polyline3d(
|
if(every(t[1], function(p) norm(p * radius_in_plane) < radius_in_plane * 1.25)) {
|
||||||
[for(p = t[1] * radius) ptf_c2sphere(p, r)],
|
pts = [for(p = t[1] * radius_in_plane) ptf_c2sphere(p, basket_radius)];
|
||||||
line_diameter
|
|
||||||
);
|
hull_polyline3d(
|
||||||
|
concat(pts, [pts[0]]),
|
||||||
|
line_diameter
|
||||||
|
);
|
||||||
|
|
||||||
|
inward_ratio = (basket_radius - 0.25 * line_diameter) / basket_radius;
|
||||||
|
outward_ratio = (basket_radius + 0.25 * line_diameter) / basket_radius;
|
||||||
|
|
||||||
|
polyhedron_hull(concat(pts * outward_ratio, pts * inward_ratio), polyhedron_abuse = true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user