import { Point, Event, LineString, Segment } from "../../internal"; /** * Sweep Line algorithm */ export declare class SweepLine { /** * Polygon rings */ private readonly _rings; /** * Comparator for ordering segments in above-below order */ private _comparator; /** * Tree of segments sorted by above-below order */ private readonly _tree; /** * Mapping between ring, edges, and segments */ private _segments; /** * Constructor * @param rings polygon rings */ constructor(rings: Array); /** * Add the event to the sweep line * @param event event * @return added segment */ add(event: Event): Segment; /** * Create a segment from the event * @param event event * @return segment */ private createSegment; /** * Find the existing event segment * * @param event * event * @return segment */ find(event: Event): Segment; /** * Determine if the two segments intersect * * @param segment1 * segment 1 * @param segment2 * segment 2 * @return true if intersection, false if not */ intersect(segment1: Segment, segment2: Segment): boolean; /** * Remove the segment from the sweep line * @param segment segment */ remove(segment: Segment): void; /** * Get the segment y value at the x location by calculating the line slope * * @param segment segment * @param x current point x value * @return segment y value */ static yValueAtX(segment: Segment, x: number): number; /** * XY order of two points * @param point1 point 1 * @param point2 point 2 * @return +1 if p1 > p2, -1 if p1 < p2, 0 if equal */ static xyOrder(point1: Point, point2: Point): number; /** * Check where the point is (left, on, right) relative to the line segment * * @param segment segment * @param point point * @return > 0 if left, 0 if on, < 0 if right */ private static isLeft; /** * Check where point 2 is (left, on, right) relative to the line from point * 0 to point 1 * @param point0 point 0 * @param point1 point 1 * @param point2 point 2 * @return > 0 if left, 0 if on, < 0 if right */ private static isLeftPoints; }