mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-17 20:11:50 +02:00
update example
This commit is contained in:
@@ -1,38 +1,62 @@
|
|||||||
use <line3d.scad>;
|
use <polyline_join.scad>;
|
||||||
use <turtle/t3d.scad>;
|
use <turtle/t3d.scad>;
|
||||||
|
use <util/rand.scad>;
|
||||||
|
|
||||||
module tree(t, leng, leng_scale1, leng_scale2, leng_limit,
|
trunk_leng = 50;
|
||||||
angleZ, angleX, diameter) {
|
branch_scale = 0.7;
|
||||||
if(leng > leng_limit) {
|
branch_angle = 30;
|
||||||
t2 = t3d(t, "xforward", leng = leng);
|
width = 2;
|
||||||
|
$fn = 4;
|
||||||
|
|
||||||
line3d(
|
module line(t1, t2, start_width, end_width) {
|
||||||
t3d(t, "point"), t3d(t2, "point"),
|
polyline_join([t3d(t1, "point"), t3d(t2, "point")]) {
|
||||||
diameter);
|
sphere(start_width / 2);
|
||||||
|
sphere(end_width / 2);
|
||||||
tree(
|
|
||||||
t3d(t2, "zturn", angle = angleZ),
|
|
||||||
leng * leng_scale1, leng_scale1, leng_scale2, leng_limit,
|
|
||||||
angleZ, angleX,
|
|
||||||
diameter);
|
|
||||||
|
|
||||||
tree(
|
|
||||||
t3d(t2, "xturn", angle = angleX),
|
|
||||||
leng * leng_scale2, leng_scale1, leng_scale2, leng_limit,
|
|
||||||
angleZ, angleX,
|
|
||||||
diameter);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leng = 20;
|
module shoot(t, trunk_leng, branch_scale, branch_angle, width) {
|
||||||
leng_limit = 1;
|
t2 = t3d(t, "forward", leng = trunk_leng);
|
||||||
leng_scale1 = 0.4;
|
line(t, t2, width, width);
|
||||||
leng_scale2 = 0.9;
|
|
||||||
angleZ = 60;
|
|
||||||
angleX = 135;
|
|
||||||
diameter = 2;
|
|
||||||
|
|
||||||
t = t3d(point = [0, 0, 0]);
|
branch_leng = trunk_leng * branch_scale;
|
||||||
|
|
||||||
tree(t, leng, leng_scale1, leng_scale2, leng_limit,
|
color("green") {
|
||||||
angleZ, angleX, diameter);
|
t3 = t3d(t2, "turn", angle = branch_angle);
|
||||||
|
line(
|
||||||
|
t2,
|
||||||
|
t3d(t3, "forward", leng = branch_leng),
|
||||||
|
width,
|
||||||
|
width * rand(1, 3)
|
||||||
|
);
|
||||||
|
|
||||||
|
t4 = t3d(t2, "turn", angle = -branch_angle);
|
||||||
|
line(
|
||||||
|
t2,
|
||||||
|
t3d(t4, "forward", leng = branch_leng),
|
||||||
|
width,
|
||||||
|
width * rand(1, 3)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module tree(t, trunk_leng, branch_scale, branch_angle, width) {
|
||||||
|
if(trunk_leng > width * 2) {
|
||||||
|
t2 = t3d(t, "forward", leng = trunk_leng * rand(0.6, 1));
|
||||||
|
line(t, t2, trunk_leng / 3, trunk_leng / 3 * branch_scale);
|
||||||
|
|
||||||
|
rolled = t3d(t2, "roll", angle = 120 * rand(0.6, 1));
|
||||||
|
branch_leng = trunk_leng * branch_scale;
|
||||||
|
|
||||||
|
t3 = t3d(rolled, "turn", angle = branch_angle * rand(0.6, 1));
|
||||||
|
tree(t3, branch_leng, branch_scale, branch_angle, width);
|
||||||
|
|
||||||
|
t4 = t3d(rolled, "turn", angle = -branch_angle * rand(0.6, 1));
|
||||||
|
tree(t4, branch_leng, branch_scale, branch_angle, width);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
shoot(t, trunk_leng, branch_scale, branch_angle, width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tree(t3d(), trunk_leng, branch_scale, branch_angle, width);
|
Reference in New Issue
Block a user