mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-12 09:44:16 +02:00
refactor
This commit is contained in:
@@ -1,56 +1,38 @@
|
|||||||
include <line2d.scad>;
|
include <line2d.scad>;
|
||||||
|
include <polyline2d.scad>;
|
||||||
include <turtle/turtle2d.scad>;
|
include <turtle/turtle2d.scad>;
|
||||||
|
|
||||||
module triangle(t, side_leng, width) {
|
side_len = 100;
|
||||||
$fn = 48;
|
min_len = 4;
|
||||||
angle = 120;
|
thickness = 0.5;
|
||||||
t_p1 = turtle2d("forward", t, side_leng);
|
|
||||||
line2d(
|
|
||||||
turtle2d("pt", t), turtle2d("pt", t_p1),
|
|
||||||
width, p1Style = "CAP_ROUND", p2Style = "CAP_ROUND"
|
|
||||||
);
|
|
||||||
|
|
||||||
t_p2 = turtle2d("forward", turtle2d("turn", t_p1, angle), side_leng);
|
sierpinski_triangle(
|
||||||
line2d(
|
turtle2d("create", 0, 0, 0),
|
||||||
turtle2d("pt", t_p1), turtle2d("pt", t_p2),
|
side_len, min_len, thickness, $fn = 12
|
||||||
width, p1Style = "CAP_ROUND", p2Style = "CAP_ROUND"
|
);
|
||||||
);
|
|
||||||
|
|
||||||
t_p3 = turtle2d("forward", turtle2d("turn", t_p2, angle), side_leng);
|
module triangle(t, side_leng, thickness) {
|
||||||
line2d(
|
t2 = turtle2d("forward", t, side_leng);
|
||||||
turtle2d("pt", t_p2), turtle2d("pt", t_p3),
|
t3 = turtle2d("forward", turtle2d("turn", t2, 120), side_leng);
|
||||||
width, p1Style = "CAP_ROUND", p2Style = "CAP_ROUND"
|
|
||||||
);
|
polyline2d([
|
||||||
|
turtle2d("pt", t),
|
||||||
|
turtle2d("pt", t2),
|
||||||
|
turtle2d("pt", t3),
|
||||||
|
turtle2d("pt", t)
|
||||||
|
], thickness, startingStyle = "CAP_ROUND", endingStyle = "CAP_ROUND");
|
||||||
}
|
}
|
||||||
|
|
||||||
module two_triangles(t, side_len, len_limit, width) {
|
module sierpinski_triangle(t, side_len, min_len, thickness) {
|
||||||
angle = 60;
|
triangle(t, side_len, thickness);
|
||||||
triangle(t, side_len, width);
|
|
||||||
next_t = turtle2d("turn", turtle2d("forward", t, side_len / 2), angle);
|
|
||||||
triangle(next_t, side_len / 2, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
module sierpinski_triangle(t, side_len, len_limit, width) {
|
if(side_len >= min_len) {
|
||||||
if(side_len >= len_limit) {
|
half_len = side_len / 2;
|
||||||
two_triangles(t, side_len, len_limit, width);
|
t2 = turtle2d("forward", t, half_len);
|
||||||
|
t3 = turtle2d("turn", turtle2d("forward", turtle2d("turn", t, 60), half_len), -60);
|
||||||
sierpinski_triangle(t, side_len / 2, len_limit, width);
|
for(turtle = [t, t2, t3]) {
|
||||||
|
sierpinski_triangle(turtle, half_len, min_len, thickness);
|
||||||
sierpinski_triangle(
|
}
|
||||||
turtle2d("forward", t, side_len / 2),
|
sierpinski_triangle(t3, half_len, min_len, thickness);
|
||||||
side_len / 2, len_limit, width
|
|
||||||
);
|
|
||||||
|
|
||||||
sierpinski_triangle(
|
|
||||||
turtle2d("turn", turtle2d("forward", turtle2d("turn", t, 60), side_len / 2), -60),
|
|
||||||
side_len / 2, len_limit, width
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
side_len = 150;
|
|
||||||
len_limit = 4;
|
|
||||||
width = 0.5;
|
|
||||||
t = turtle2d("create", 0, 0, 0);
|
|
||||||
|
|
||||||
sierpinski_triangle(t, side_len, len_limit, width);
|
|
Reference in New Issue
Block a user