mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-03-14 02:59:42 +01:00
add lotus_like_flower
This commit is contained in:
parent
3f356e0e7c
commit
3577813f62
62
examples/lotus_like_flower.scad
Normal file
62
examples/lotus_like_flower.scad
Normal file
@ -0,0 +1,62 @@
|
||||
include <util/fibseq.scad>;
|
||||
|
||||
spirals = 10;
|
||||
petals_per_spiral = 4;
|
||||
|
||||
module petal(radius, thickness) {
|
||||
translate([-radius * 1.5, 0, radius * 2])
|
||||
rotate([90, 120, 90])
|
||||
intersection() {
|
||||
difference() {
|
||||
sphere(radius * 2);
|
||||
sphere(radius * 2 - thickness);
|
||||
}
|
||||
|
||||
linear_extrude(radius * 5) hull() {
|
||||
translate([radius * 1.25, 0, 0]) circle(radius / 3);
|
||||
translate([-1.1 * radius, 0, 0]) circle(radius / 3);
|
||||
circle(radius * 0.85);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module petals(fibseq, i = 0) {
|
||||
if(i < len(fibseq) - 1) {
|
||||
f1 = fibseq[i];
|
||||
f2 = fibseq[i + 1];
|
||||
offset = f1 - f2;
|
||||
translate([0, 0, offset * 1.8])
|
||||
rotate([-5, 40, 10])
|
||||
petal(-offset, -offset / 6);
|
||||
|
||||
translate([0, offset, 0])
|
||||
rotate(90)
|
||||
petals(fibseq, i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
module lotus_like_flower(spirals, petals_per_spiral) {
|
||||
step_angle = 360 / spirals;
|
||||
|
||||
fibseq = fibonacci_sequence(1, petals_per_spiral + 1);
|
||||
|
||||
for(i = [0:spirals - 1]) {
|
||||
rotate(i * step_angle)
|
||||
petals(fibseq);
|
||||
}
|
||||
|
||||
fib_diff = fibseq[petals_per_spiral - 1] - fibseq[petals_per_spiral - 2];
|
||||
|
||||
translate([0, 0, -fib_diff])
|
||||
scale([1, 1, fib_diff])
|
||||
sphere(1);
|
||||
|
||||
translate([0, 0, -fib_diff * 2.25])
|
||||
difference() {
|
||||
sphere(fib_diff);
|
||||
translate([-fib_diff, -fib_diff, -fib_diff * 2])
|
||||
cube(fib_diff * 2);
|
||||
}
|
||||
}
|
||||
|
||||
lotus_like_flower(spirals, petals_per_spiral + 1, $fn = 24);
|
Loading…
x
Reference in New Issue
Block a user