package com.revolsys.geometry.graph.linestring;
import java.util.LinkedHashSet;
import java.util.Set;
import com.revolsys.geometry.graph.Edge;
import com.revolsys.geometry.graph.visitor.AbstractEdgeListenerVisitor;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.geometry.model.segment.LineSegment;
public class LineSegmentIntersectionVisitor extends AbstractEdgeListenerVisitor<LineSegment> {
private final Set<Geometry> intersections = new LinkedHashSet<>();
private final LineSegment querySeg;
public LineSegmentIntersectionVisitor(final LineSegment querySeg) {
this.querySeg = querySeg;
}
@Override
public void accept(final Edge<LineSegment> edge) {
final LineSegment lineSegment = edge.getObject();
if (lineSegment.getBoundingBox().intersects(this.querySeg.getBoundingBox())) {
final Geometry intersection = this.querySeg.getIntersection(lineSegment);
if (intersection != null && !intersection.isEmpty()) {
this.intersections.add(intersection);
}
}
}
public Set<Geometry> getIntersections() {
return this.intersections;
}
}