mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-06 14:56:47 +02:00
LINES use path_extrude
This commit is contained in:
@@ -4,12 +4,11 @@
|
|||||||
* @copyright Justin Lin, 2017
|
* @copyright Justin Lin, 2017
|
||||||
* @license https://opensource.org/licenses/lgpl-3.0.html
|
* @license https://opensource.org/licenses/lgpl-3.0.html
|
||||||
*
|
*
|
||||||
* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-function_grapher.html
|
* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-function_grapher.html
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
|
|
||||||
use <util/reverse.scad>;
|
use <util/reverse.scad>;
|
||||||
use <polyline3d.scad>;
|
|
||||||
use <hull_polyline3d.scad>;
|
use <hull_polyline3d.scad>;
|
||||||
use <path_extrude.scad>;
|
use <path_extrude.scad>;
|
||||||
use <shape_circle.scad>;
|
use <shape_circle.scad>;
|
||||||
@@ -22,6 +21,8 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
yi_range = [0:rows - 2];
|
yi_range = [0:rows - 2];
|
||||||
xi_range = [0:columns - 2];
|
xi_range = [0:columns - 2];
|
||||||
|
|
||||||
|
half_thickness = thickness / 2;
|
||||||
|
|
||||||
// Increasing $fn will be slow when you use "LINES", "HULL_FACES" or "HULL_LINES".
|
// Increasing $fn will be slow when you use "LINES", "HULL_FACES" or "HULL_LINES".
|
||||||
|
|
||||||
module faces() {
|
module faces() {
|
||||||
@@ -40,7 +41,7 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
|
|
||||||
leng_pts = len(top_pts);
|
leng_pts = len(top_pts);
|
||||||
|
|
||||||
top_tri_faces1 = slicing == "SLASH" ? [
|
top_tri_faces1 = [
|
||||||
for(yi = yi_range)
|
for(yi = yi_range)
|
||||||
for(xi = xi_range)
|
for(xi = xi_range)
|
||||||
[
|
[
|
||||||
@@ -48,17 +49,9 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
xy_to_index(xi + 1, yi + 1, columns),
|
xy_to_index(xi + 1, yi + 1, columns),
|
||||||
xy_to_index(xi + 1, yi, columns)
|
xy_to_index(xi + 1, yi, columns)
|
||||||
]
|
]
|
||||||
] : [
|
|
||||||
for(yi = yi_range)
|
|
||||||
for(xi = xi_range)
|
|
||||||
[
|
|
||||||
xy_to_index(xi, yi, columns),
|
|
||||||
xy_to_index(xi, yi + 1, columns),
|
|
||||||
xy_to_index(xi + 1, yi, columns)
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|
||||||
top_tri_faces2 = slicing == "SLASH" ? [
|
top_tri_faces2 = [
|
||||||
for(yi = yi_range)
|
for(yi = yi_range)
|
||||||
for(xi = xi_range)
|
for(xi = xi_range)
|
||||||
[
|
[
|
||||||
@@ -66,14 +59,6 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
xy_to_index(xi, yi + 1, columns),
|
xy_to_index(xi, yi + 1, columns),
|
||||||
xy_to_index(xi + 1, yi + 1, columns)
|
xy_to_index(xi + 1, yi + 1, columns)
|
||||||
]
|
]
|
||||||
] : [
|
|
||||||
for(yi = yi_range)
|
|
||||||
for(xi = xi_range)
|
|
||||||
[
|
|
||||||
xy_to_index(xi, yi + 1, columns),
|
|
||||||
xy_to_index(xi + 1, yi + 1, columns),
|
|
||||||
xy_to_index(xi + 1, yi, columns)
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|
||||||
offset_v = [leng_pts, leng_pts, leng_pts];
|
offset_v = [leng_pts, leng_pts, leng_pts];
|
||||||
@@ -164,54 +149,7 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
test_function_grapher_faces(pts, face_idxs);
|
test_function_grapher_faces(pts, face_idxs);
|
||||||
}
|
}
|
||||||
|
|
||||||
module tri_to_slash_lines(tri1, tri2) {
|
|
||||||
polyline3d(concat(tri1, [tri1[0]]), thickness);
|
|
||||||
if(tri2[0][0] == points[0][0][0]) {
|
|
||||||
polyline3d([tri2[0], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tri2[1][1] == points[rows - 1][0][1]) {
|
|
||||||
polyline3d([tri2[1], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module tri_to_backslash_lines(tri1, tri2) {
|
|
||||||
polyline3d(concat(tri1, [tri1[0]]), thickness);
|
|
||||||
if(tri2[1][0] == points[0][columns - 1][0]) {
|
|
||||||
polyline3d([tri2[1], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tri2[2][1] == points[rows - 1][columns - 1][1]) {
|
|
||||||
polyline3d([tri2[0], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module tri_to_slash_hull_lines(tri1, tri2) {
|
|
||||||
hull_polyline3d(concat(tri1, [tri1[0]]), thickness);
|
|
||||||
|
|
||||||
if(tri2[0][0] == points[0][0][0]) {
|
|
||||||
hull_polyline3d([tri2[0], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tri2[1][1] == points[rows - 1][0][1]) {
|
|
||||||
hull_polyline3d([tri2[1], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module tri_to_backslash_hull_lines(tri1, tri2) {
|
|
||||||
hull_polyline3d(concat(tri1, [tri1[0]]), thickness);
|
|
||||||
|
|
||||||
if(tri2[1][0] == points[0][columns - 1][0]) {
|
|
||||||
hull_polyline3d([tri2[1], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tri2[2][1] == points[rows - 1][columns - 1][1]) {
|
|
||||||
hull_polyline3d([tri2[0], tri2[2]], thickness);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module hull_pts(tri) {
|
module hull_pts(tri) {
|
||||||
half_thickness = thickness / 2;
|
|
||||||
hull() {
|
hull() {
|
||||||
translate(tri[0]) sphere(half_thickness);
|
translate(tri[0]) sphere(half_thickness);
|
||||||
translate(tri[1]) sphere(half_thickness);
|
translate(tri[1]) sphere(half_thickness);
|
||||||
@@ -252,19 +190,21 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(style == "LINES") {
|
if(style == "LINES") {
|
||||||
|
section = shape_circle(radius = half_thickness);
|
||||||
for(row = points) {
|
for(row = points) {
|
||||||
polyline3d(row, thickness);
|
path_extrude(section, row, method = "AXIS_ANGLE");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(x = [0:columns - 1]) {
|
for(x = [0:columns - 1]) {
|
||||||
polyline3d([for(y = [0:rows - 1]) points[y][x]], thickness);
|
path_extrude(section, [for(y = [0:rows - 1]) points[y][x]], method = "AXIS_ANGLE");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = [0:columns - 1]) {
|
for(c = [0:columns - 2]) {
|
||||||
polyline3d([for(r = [0:rows - 1 - c]) points[r + c][r]], thickness);
|
path_extrude(section, [for(r = [0:rows - 1 - c]) points[r + c][r]], method = "AXIS_ANGLE");
|
||||||
}
|
}
|
||||||
for(c = [0:columns - 1]) {
|
|
||||||
polyline3d([for(r = [0:rows - 1 - c]) points[r][r + c]], thickness);
|
for(c = [0:columns - 2]) {
|
||||||
|
path_extrude(section, [for(r = [0:rows - 1 - c]) points[r][r + c]], method = "AXIS_ANGLE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -276,11 +216,11 @@ module function_grapher(points, thickness, style = "FACES") {
|
|||||||
hull_polyline3d([for(y = [0:rows - 1]) points[y][x]], thickness);
|
hull_polyline3d([for(y = [0:rows - 1]) points[y][x]], thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = [0:columns - 1]) {
|
for(c = [0:columns - 2]) {
|
||||||
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r + c][r]], thickness);
|
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r + c][r]], thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = [0:columns - 1]) {
|
for(c = [0:columns - 2]) {
|
||||||
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r][r + c]], thickness);
|
hull_polyline3d([for(r = [0:rows - 1 - c]) points[r][r + c]], thickness);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user