export function segmentsIntersect()

in src/geo/Lines.ts [39:70]


export function segmentsIntersect(s1: Segment, s2: Segment): boolean {
    if (parallel(s1, s2)) {
        return false;
    }

    const o1: number = tripletOrientation(s1.p1, s1.p2, s2.p1);
    const o2: number = tripletOrientation(s1.p1, s1.p2, s2.p2);
    const o3: number = tripletOrientation(s2.p1, s2.p2, s1.p1);
    const o4: number = tripletOrientation(s2.p1, s2.p2, s1.p2);

    if (o1 !== o2 && o3 !== o4) {
        return true;
    }

    if (o1 === 0 && colinearPointOnSegment(s2.p1, s1)) {
        return true;
    }

    if (o2 === 0 && colinearPointOnSegment(s2.p2, s1)) {
        return true;
    }

    if (o3 === 0 && colinearPointOnSegment(s1.p1, s2)) {
        return true;
    }

    if (o4 === 0 && colinearPointOnSegment(s1.p2, s2)) {
        return true;
    }

    return false;
}