computeCollinearIntersection method
Implementation
int computeCollinearIntersection(
Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2) {
bool p1q1p2 = Envelope.intersectsPoint(p1, p2, q1);
bool p1q2p2 = Envelope.intersectsPoint(p1, p2, q2);
bool q1p1q2 = Envelope.intersectsPoint(q1, q2, p1);
bool q1p2q2 = Envelope.intersectsPoint(q1, q2, p2);
if (p1q1p2 && p1q2p2) {
intPt[0] = q1;
intPt[1] = q2;
return LineIntersector.COLLINEAR_INTERSECTION;
}
if (q1p1q2 && q1p2q2) {
intPt[0] = p1;
intPt[1] = p2;
return LineIntersector.COLLINEAR_INTERSECTION;
}
if (p1q1p2 && q1p1q2) {
intPt[0] = q1;
intPt[1] = p1;
return q1.equals(p1) && !p1q2p2 && !q1p2q2
? LineIntersector.POINT_INTERSECTION
: LineIntersector.COLLINEAR_INTERSECTION;
}
if (p1q1p2 && q1p2q2) {
intPt[0] = q1;
intPt[1] = p2;
return q1.equals(p2) && !p1q2p2 && !q1p1q2
? LineIntersector.POINT_INTERSECTION
: LineIntersector.COLLINEAR_INTERSECTION;
}
if (p1q2p2 && q1p1q2) {
intPt[0] = q2;
intPt[1] = p1;
return q2.equals(p1) && !p1q1p2 && !q1p2q2
? LineIntersector.POINT_INTERSECTION
: LineIntersector.COLLINEAR_INTERSECTION;
}
if (p1q2p2 && q1p2q2) {
intPt[0] = q2;
intPt[1] = p2;
return q2.equals(p2) && !p1q1p2 && !q1p1q2
? LineIntersector.POINT_INTERSECTION
: LineIntersector.COLLINEAR_INTERSECTION;
}
return LineIntersector.NO_INTERSECTION;
}