Collection<Point2D.Double> cutPoints(Line2D.Double original) {

		final SortedSet<Point2D.Double> result = new TreeSet<Point2D.Double>(new Point2DComparatorDistance(original
				.getP1()));

		if (GeomUtils.isHorizontal(original) == false) {
			for (InflateData2 x : inflateX) {
				final Line2D.Double vertical = new Line2D.Double(x.getPos(), GeomUtils.getMinY(original), x.getPos(),
						GeomUtils.getMaxY(original));
				final Point2D.Double inter = GeomUtils.getSegIntersection(original, vertical);
				if (inter != null) {
					result.add(inter);
				}
			}
		}
		if (GeomUtils.isVertical(original) == false) {
			for (InflateData2 y : inflateY) {
				final Line2D.Double horizontal = new Line2D.Double(GeomUtils.getMinX(original), y.getPos(), GeomUtils
						.getMaxX(original), y.getPos());
				final Point2D.Double inter = GeomUtils.getSegIntersection(original, horizontal);
				if (inter != null) {
					result.add(inter);
				}
			}
		}
		return result;
	}