From 8457bd403c88dc3357c835da1bd9f1ddcf5bda4c Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 27 May 2019 17:28:34 +0800 Subject: [PATCH] refactor --- src/__private__/__in_line.scad | 6 ++++++ src/in_shape.scad | 10 ++-------- 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 src/__private__/__in_line.scad diff --git a/src/__private__/__in_line.scad b/src/__private__/__in_line.scad new file mode 100644 index 00000000..04d9bb03 --- /dev/null +++ b/src/__private__/__in_line.scad @@ -0,0 +1,6 @@ +function __in_line(line_pts, pt) = + let( + v1 = line_pts[0] - pt, + v2 = line_pts[1] - pt + ) + (cross(v1, v2) == 0) && ((v1 * v2) <= 0); \ No newline at end of file diff --git a/src/in_shape.scad b/src/in_shape.scad index 0c17ffcb..d64ee18c 100644 --- a/src/in_shape.scad +++ b/src/in_shape.scad @@ -1,4 +1,5 @@ include <__private__/__edges_from.scad>; +include <__private__/__in_line.scad>; function _in_shape_in_line_equation(edge, pt) = let( @@ -10,17 +11,10 @@ function _in_shape_in_line_equation(edge, pt) = b = y1 - a * x1 ) (pt[1] == a * pt[0] + b); - -function _in_shape_in_edge(edge, pt) = - let( - v1 = edge[0] - pt, - v2 = edge[1] - pt - ) - (cross(v1, v2) == 0) && ((v1 * v2) <= 0); function _in_shape_in_any_edges_sub(edges, leng, pt, i) = leng == i ? false : ( - _in_shape_in_edge(edges[i], pt) ? true : _in_shape_in_any_edges_sub(edges, leng, pt, i + 1) + __in_line(edges[i], pt) ? true : _in_shape_in_any_edges_sub(edges, leng, pt, i + 1) ); function _in_shape_in_any_edges(edges, pt) = _in_shape_in_any_edges_sub(edges, len(edges), pt, 0);