mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-04-14 11:11:55 +02:00
add shell
This commit is contained in:
parent
fbc07cec80
commit
702aab846e
@ -2,47 +2,34 @@ use <experimental/tile_penrose3.scad>;
|
||||
use <experimental/ptf_c2sphere.scad>;
|
||||
use <ptf/ptf_rotate.scad>;
|
||||
use <hull_polyline3d.scad>;
|
||||
use <surface/sf_thickenT.scad>;
|
||||
use <polyhedron_hull.scad>;
|
||||
use <util/every.scad>;
|
||||
|
||||
radius = 10;
|
||||
n = 5;
|
||||
line_diameter = .5;
|
||||
$fn = 3;
|
||||
basket_radius = 40;
|
||||
radius_in_plane = basket_radius / 1.25 / cos(36);
|
||||
n = 4;
|
||||
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) {
|
||||
cos36 = cos(36);
|
||||
sin36 = sin(36);
|
||||
module penrose_basket(basket_radius, radius_in_plane, n, line_diameter) {
|
||||
tris = tile_penrose3(n);
|
||||
|
||||
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) {
|
||||
hull_polyline3d(
|
||||
[for(p = t[1] * radius) ptf_c2sphere(p, r)],
|
||||
line_diameter
|
||||
);
|
||||
if(every(t[1], function(p) norm(p * radius_in_plane) < radius_in_plane * 1.25)) {
|
||||
pts = [for(p = t[1] * radius_in_plane) ptf_c2sphere(p, basket_radius)];
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user