/** * Tests if a point is on a line. */ public static boolean lineContainsPoint(int x1, int y1, int x2, int y2, int px, int py) { return lineContainsPoint(x1, y1, x2, y2, px, py, 3d); }
@Override public boolean contains(Point2D.Double p) { return Geom.lineContainsPoint( line.x1, line.y1, line.x2, line.y2, p.x, p.y, AttributeKeys.getStrokeTotalWidth(this)); }
switch (i.currentSegment(coords)) { case PathIterator.SEG_CLOSE: if (Geom.lineContainsPoint( prevX, prevY, moveX, moveY, p.x, p.y, tolerance)) { break; case PathIterator.SEG_LINETO: if (Geom.lineContainsPoint( prevX, prevY, coords[0], coords[1], p.x, p.y, tolerance)) {
/** * Adds the curve to the bezier path. * * @param bezCurve * @param bezierPath */ private static void addCurveTo(Point2D.Double[] bezCurve, BezierPath bezierPath, double errorSquared, boolean connectsCorners) { BezierPath.Node lastNode = bezierPath.get(bezierPath.size() - 1); double error = Math.sqrt(errorSquared); if (connectsCorners && Geom.lineContainsPoint(lastNode.x[0], lastNode.y[0], bezCurve[3].x, bezCurve[3].y, bezCurve[1].x, bezCurve[1].y, error) && Geom.lineContainsPoint(lastNode.x[0], lastNode.y[0], bezCurve[3].x, bezCurve[3].y, bezCurve[2].x, bezCurve[2].y, error)) { bezierPath.lineTo( bezCurve[3].x, bezCurve[3].y); } else { bezierPath.curveTo( bezCurve[1].x, bezCurve[1].y, bezCurve[2].x, bezCurve[2].y, bezCurve[3].x, bezCurve[3].y); } }
protected void addPointToFigure(Point2D.Double newPoint) { int pointCount = createdFigure.getNodeCount(); createdFigure.willChange(); if (pointCount < 2) { createdFigure.addNode(new BezierPath.Node(newPoint)); } else { Point2D.Double endPoint = createdFigure.getEndPoint(); Point2D.Double secondLastPoint = (pointCount <= 1) ? endPoint : createdFigure.getPoint(pointCount - 2, 0); if (newPoint.equals(endPoint)) { // nothing to do } else if (pointCount > 1 && Geom.lineContainsPoint(newPoint.x, newPoint.y, secondLastPoint.x, secondLastPoint.y, endPoint.x, endPoint.y, 0.9f / getView().getScaleFactor())) { createdFigure.setPoint(pointCount - 1, 0, newPoint); } else { createdFigure.addNode(new BezierPath.Node(newPoint)); } } createdFigure.changed(); }
Point2D.Double p2 = cp.get(0, 0); if (Geom.lineContainsPoint(p1.x, p1.y, p2.x, p2.y, p.x, p.y, tolerance)) { return true; Point2D.Double p2 = cp.get(path.size() - 1, 0); if (Geom.lineContainsPoint(p1.x, p1.y, p2.x, p2.y, p.x, p.y, tolerance)) { return true;
v2 = get(i + 1); if (v1.mask == 0 && v2.mask == 0) { if (Geom.lineContainsPoint(v1.x[0], v1.y[0], v2.x[0], v2.y[0], find.x, find.y, tolerance)) { return i; v2 = get(0); if (v1.mask == 0 && v2.mask == 0) { if (Geom.lineContainsPoint(v1.x[0], v1.y[0], v2.x[0], v2.y[0], find.x, find.y, tolerance)) { return size() - 1;
v2 = get(i + 1); if (v1.mask == 0 && v2.mask == 0) { if (Geom.lineContainsPoint(v1.x[0], v1.y[0], v2.x[0], v2.y[0], find.x, find.y, flatness)) { relativeLen += Geom.length(v1.x[0], v1.y[0], find.x, find.y); return relativeLen / len; v2 = get(0); if (v1.mask == 0 && v2.mask == 0) { if (Geom.lineContainsPoint(v1.x[0], v1.y[0], v2.x[0], v2.y[0], find.x, find.y, flatness)) { relativeLen += Geom.length(v1.x[0], v1.y[0], find.x, find.y); return relativeLen / len;