1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-18 04:21:16 +02:00

simplify LINES and HULL_LINES

This commit is contained in:
Justin Lin
2021-02-09 15:15:08 +08:00
parent 8d6fd0b290
commit 3789cb11a6

View File

@@ -11,8 +11,10 @@
use <util/reverse.scad>; use <util/reverse.scad>;
use <polyline3d.scad>; use <polyline3d.scad>;
use <hull_polyline3d.scad>; use <hull_polyline3d.scad>;
use <path_extrude.scad>;
use <shape_circle.scad>;
module function_grapher(points, thickness, style = "FACES", slicing = "SLASH") { module function_grapher(points, thickness, style = "FACES") {
rows = len(points); rows = len(points);
columns = len(points[0]); columns = len(points[0]);
@@ -221,59 +223,12 @@ module function_grapher(points, thickness, style = "FACES", slicing = "SLASH") {
hull_pts(tri1); hull_pts(tri1);
hull_pts(tri2); hull_pts(tri2);
} }
module tri_to_graph(twintri_lt) {
if(style == "LINES") {
if(slicing == "SLASH") {
for(twintri = twintri_lt) {
tri_to_slash_lines(twintri[0], twintri[1]);
}
}
else {
for(twintri = twintri_lt) {
tri_to_backslash_lines(twintri[0], twintri[1]);
}
}
} else if(style == "HULL_FACES") { // Warning: May be very slow!!
for(twintri = twintri_lt) {
tri_to_hull_faces(twintri[0], twintri[1]);
}
} else if(style == "HULL_LINES") { // Warning: May be very slow!!
if(slicing == "SLASH") {
for(twintri = twintri_lt) {
tri_to_slash_hull_lines(twintri[0], twintri[1]);
}
}
else {
for(twintri = twintri_lt) {
tri_to_backslash_hull_lines(twintri[0], twintri[1]);
}
}
}
}
if(style == "FACES") { if(style == "FACES") {
faces(); faces();
} else { }
twintri_lt = slicing == "SLASH" ? else if(style == "HULL_FACES") {
[ twintri_lt =
for(yi = yi_range)
for(xi = xi_range)
[
[
points[yi][xi],
points[yi][xi + 1],
points[yi + 1][xi + 1]
],
[
points[yi][xi],
points[yi + 1][xi + 1],
points[yi + 1][xi]
]
]
]
:
[ [
for(yi = yi_range) for(yi = yi_range)
for(xi = xi_range) for(xi = xi_range)
@@ -291,7 +246,44 @@ module function_grapher(points, thickness, style = "FACES", slicing = "SLASH") {
] ]
]; ];
tri_to_graph(twintri_lt); for(twintri = twintri_lt) {
tri_to_hull_faces(twintri[0], twintri[1]);
}
}
else {
if(style == "LINES") {
for(row = points) {
polyline3d(row, thickness);
}
for(x = [0:columns - 1]) {
polyline3d([for(y = [0:rows - 1]) points[y][x]], thickness);
}
for(c = [0:columns - 1]) {
polyline3d([for(r = [0:rows - 1 - c]) points[r + c][r]], thickness);
}
for(c = [0:columns - 1]) {
polyline3d([for(r = [0:rows - 1 - c]) points[r][r + c]], thickness);
}
}
else {
for(row = points) {
hull_polyline3d(row, thickness);
}
for(x = [0:columns - 1]) {
hull_polyline3d([for(y = [0:rows - 1]) points[y][x]], thickness);
}
for(c = [0:columns - 1]) {
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r + c][r]], thickness);
}
for(c = [0:columns - 1]) {
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r][r + c]], thickness);
}
}
} }
} }