diff --git a/masque/shapes/path.py b/masque/shapes/path.py index a7b0ac6..ff1c6e9 100644 --- a/masque/shapes/path.py +++ b/masque/shapes/path.py @@ -344,11 +344,11 @@ class Path(Shape): bs = v[1:-1] - v[:-2] + perp[1:] - perp[:-1] ds = v[1:-1] - v[:-2] - perp[1:] + perp[:-1] - rp = numpy.linalg.solve(As, bs[:, :, None])[:, 0] - rn = numpy.linalg.solve(As, ds[:, :, None])[:, 0] + rp = numpy.linalg.lstsq(As, bs[:, :, None], rcond=1e-12)[0][:, 0, 0] + rn = numpy.linalg.lstsq(As, ds[:, :, None], rcond=1e-12)[0][:, 0, 0] - intersection_p = v[:-2] + rp * dv[:-1] + perp[:-1] - intersection_n = v[:-2] + rn * dv[:-1] - perp[:-1] + intersection_p = v[:-2] + rp[:, None] * dv[:-1] + perp[:-1] + intersection_n = v[:-2] + rn[:, None] * dv[:-1] - perp[:-1] towards_perp = (dv[1:] * perp[:-1]).sum(axis=1) > 0 # path bends towards previous perp? # straight = (dv[1:] * perp[:-1]).sum(axis=1) == 0 # path is straight