import { Point } from '../../math/geometry/point'; import { Polyline } from '../../math/geometry/polyline'; import { PolylinePoint } from '../../math/geometry/polylinePoint'; import { BinaryHeapWithComparer } from '../../structs/BinaryHeapWithComparer'; import { RBTree } from '../../math/RBTree/rbTree'; import { LeftObstacleSide } from '../spline/coneSpanner/LeftObstacleSide'; import { RightObstacleSide } from '../spline/coneSpanner/RightObstacleSide'; import { SweepEvent } from '../spline/coneSpanner/SweepEvent'; import { ObstacleSideComparer } from './ObstacleSideComparer'; import { SegmentBase } from './SegmentBase'; import { PointSet } from '../../utils/PointSet'; export declare class LineSweeperBase { directionPerp: Point; eventQueue: BinaryHeapWithComparer; LeftObstacleSideTree: RBTree; ObstacleSideComparer: ObstacleSideComparer; RightObstacleSideTree: RBTree; protected Ports: PointSet; constructor(obstacles: Array, sweepDirection: Point); protected get EventQueue(): BinaryHeapWithComparer; protected set EventQueue(value: BinaryHeapWithComparer); SweepDirection: Point; protected get DirectionPerp(): Point; protected set DirectionPerp(value: Point); protected PreviousZ: number; z: number; get Z(): number; set Z(value: number); Obstacles: Array; protected GetZS(eve: SweepEvent): number; protected GetZP(point: Point): number; protected SegmentIsNotHorizontal(a: Point, b: Point): boolean; protected RemoveLeftSide(side: LeftObstacleSide): void; protected RemoveRightSide(side: RightObstacleSide): void; protected InsertLeftSide(side: LeftObstacleSide): void; protected InsertRightSide(side: RightObstacleSide): void; protected FindFirstObstacleSideToTheLeftOfPoint(point: Point): RightObstacleSide; protected FindFirstObstacleSideToToTheRightOfPoint(point: Point): LeftObstacleSide; protected EnqueueEvent(eve: SweepEvent): void; protected InitQueueOfEvents(): void; EnqueueLowestPointsOnObstacles(poly: Polyline): void; GetLowestPoint(poly: Polyline): PolylinePoint; Compare(a: SweepEvent, b: SweepEvent): number; Less(a: Point, b: Point): boolean; ComparePoints(aSite: Point, bSite: Point): number; }