Point2D ptStart = multiPath.getXY(startVertex); while (multiPath.getXY(endVertex - 1).isEqual(ptStart)) endVertex--; m_srcPts.add(new GraphicPoint(multiPath.getXY(i))); Point2D ptStart = multiPath.getXY(startVertex); while ((startVertex < endVertex) && multiPath.getXY(startVertex + 1).isEqual(ptStart)) startVertex++; Point2D ptEnd = multiPath.getXY(endVertex - 1); while ((startVertex < endVertex) && multiPath.getXY(endVertex - 2).isEqual(ptEnd)) endVertex--; GraphicPoint pt = new GraphicPoint(multiPath.getXY(startVertex)); pt.type |= IS_END + CLOSING_SEG; m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(i)); m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(endVertex - 1)); pt.type |= IS_END; m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(i)); pt.type |= CLOSING_SEG; m_srcPts.add(pt);
Point2D ptStart = multiPath.getXY(startVertex); while (multiPath.getXY(endVertex - 1).isEqual(ptStart)) endVertex--; m_srcPts.add(new GraphicPoint(multiPath.getXY(i))); Point2D ptStart = multiPath.getXY(startVertex); while ((startVertex < endVertex) && multiPath.getXY(startVertex + 1).isEqual(ptStart)) startVertex++; Point2D ptEnd = multiPath.getXY(endVertex - 1); while ((startVertex < endVertex) && multiPath.getXY(endVertex - 2).isEqual(ptEnd)) endVertex--; GraphicPoint pt = new GraphicPoint(multiPath.getXY(startVertex)); pt.type |= IS_END + CLOSING_SEG; m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(i)); m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(endVertex - 1)); pt.type |= IS_END; m_srcPts.add(pt); pt = new GraphicPoint(multiPath.getXY(i)); pt.type |= CLOSING_SEG; m_srcPts.add(pt);
private static boolean multiPathExactlyEqualsMultiPath_( MultiPath multipathA, MultiPath multipathB, double tolerance, ProgressTracker progress_tracker) { if (multipathA.getPathCount() != multipathB.getPathCount() || multipathA.getPointCount() != multipathB.getPointCount()) return false; Point2D ptA = new Point2D(), ptB = new Point2D(); boolean bAllPointsEqual = true; double tolerance_sq = tolerance * tolerance; for (int ipath = 0; ipath < multipathA.getPathCount(); ipath++) { if (multipathA.getPathEnd(ipath) != multipathB.getPathEnd(ipath)) { bAllPointsEqual = false; break; } for (int i = multipathA.getPathStart(ipath); i < multipathB .getPathEnd(ipath); i++) { multipathA.getXY(i, ptA); multipathB.getXY(i, ptB); if (Point2D.sqrDistance(ptA, ptB) > tolerance_sq) { bAllPointsEqual = false; break; } } if (!bAllPointsEqual) break; } if (!bAllPointsEqual) return false; return true; }
private static boolean multiPathExactlyEqualsMultiPath_( MultiPath multipathA, MultiPath multipathB, double tolerance, ProgressTracker progress_tracker) { if (multipathA.getPathCount() != multipathB.getPathCount() || multipathA.getPointCount() != multipathB.getPointCount()) return false; Point2D ptA = new Point2D(), ptB = new Point2D(); boolean bAllPointsEqual = true; double tolerance_sq = tolerance * tolerance; for (int ipath = 0; ipath < multipathA.getPathCount(); ipath++) { if (multipathA.getPathEnd(ipath) != multipathB.getPathEnd(ipath)) { bAllPointsEqual = false; break; } for (int i = multipathA.getPathStart(ipath); i < multipathB .getPathEnd(ipath); i++) { multipathA.getXY(i, ptA); multipathB.getXY(i, ptB); if (Point2D.sqrDistance(ptA, ptB) > tolerance_sq) { bAllPointsEqual = false; break; } } if (!bAllPointsEqual) break; } if (!bAllPointsEqual) return false; return true; }
int path_b = intersector.getBlueElement(); pt_b = multipath_b.getXY(multipath_b.getPathStart(path_b)); env_a_inf.setCoords(intersector.getRedEnvelope()); env_a_inf.inflate(tolerance, tolerance);
int path_b = intersector.getBlueElement(); pt_b = multipath_b.getXY(multipath_b.getPathStart(path_b)); env_a_inf.setCoords(intersector.getRedEnvelope()); env_a_inf.inflate(tolerance, tolerance);
Point2D anyPoint = multi_path_b.getXY(multi_path_b.getPathStart(ipath)); int res = PointInPolygonHelper.isPointInPolygon(p_polygon_a, anyPoint, 0); if (res == 0)
Point2D anyPoint = multi_path_b.getXY(multi_path_b.getPathStart(ipath)); int res = PointInPolygonHelper.isPointInPolygon(p_polygon_a, anyPoint, 0); if (res == 0)