diff --git a/src/triangle/_impl/_tri_ear_clipping_impl.scad b/src/triangle/_impl/_tri_ear_clipping_impl.scad index fa6e1f72..55aabb19 100644 --- a/src/triangle/_impl/_tri_ear_clipping_impl.scad +++ b/src/triangle/_impl/_tri_ear_clipping_impl.scad @@ -13,10 +13,9 @@ function _triangulate_snipable(shape_pts, u, v, w, n, indices, epsilon = 0.0001) let( a = shape_pts[indices[u]], b = shape_pts[indices[v]], - c = shape_pts[indices[w]], - determinant = cross([b.x - a.x, b.y - a.y], [c.x - a.x, c.y - a.y]) + c = shape_pts[indices[w]] ) - epsilon <= determinant && _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices); + epsilon <= cross(b - a, c - a) && _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices); function _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices, p = 0) = p == n || ( diff --git a/src/triangle/tri_incenter.scad b/src/triangle/tri_incenter.scad index 91de127f..f1d45f70 100644 --- a/src/triangle/tri_incenter.scad +++ b/src/triangle/tri_incenter.scad @@ -15,13 +15,14 @@ function tri_incenter(shape_pts) = pc = shape_pts[2], a = norm(pb - pc), b = norm(pc - pa), - c = norm(pa - pb) + c = norm(pa - pb), + abc = [a, b, c] ) (len(pa) == 2 ? [ - (a * pa.x + b * pb.x + c * pc.x), - (a * pa.y + b * pb.y + c * pc.y) + abc * [pa.x, pb.x, pc.x], + abc * [pa.y, pb.y, pc.y] ] : [ - (a * pa.x + b * pb.x + c * pc.x), - (a * pa.y + b * pb.y + c * pc.y), - (a * pa.z + b * pb.z + c * pc.z) + abc * [pa.x, pb.x, pc.x], + abc * [pa.y, pb.y, pc.y], + abc * [pa.z, pb.z, pc.z] ]) / (a + b + c); \ No newline at end of file