private double getSmoothedNormal(Point2D prev, Point2D p, Point2D next, int normalIndex) { double n = AngleUtil.normalize(next.getSubtraction(p).getAngle() - AngleUtil.RIGHT); double prevN = AngleUtil.normalize(p.getSubtraction(prev).getAngle() - AngleUtil.RIGHT); double diff = AngleUtil.getSmallestDifference(n, prevN); double bissector = AngleUtil.getBisector(prevN, n); double res; if (diff > NO_SMOOTH_ANGLE) { if (normalIndex == 0) { res = n; } else { res = prevN; } } else { res = bissector; } return res; }