import { Point, ICurve } from '../../..'; import { Polyline } from '../../../math/geometry'; import { Ellipse } from '../../../math/geometry/ellipse'; import { PolylinePoint } from '../../../math/geometry/polylinePoint'; import { RBNode } from '../../../math/RBTree/rbNode'; import { RBTree } from '../../../math/RBTree/rbTree'; import { LineSweeperBase } from '../../visibility/LineSweeperBase'; import { PortObstacleEvent } from '../../visibility/PortObstacleEvent'; import { VisibilityGraph } from '../../visibility/VisibilityGraph'; import { BrokenConeSide } from './BrokenConeSide'; import { Cone } from './Cone'; import { ConeLeftSide } from './ConeLeftSide'; import { ConeRightSide } from './ConeRightSide'; import { ConeSide } from './ConeSide'; import { ConeSideComparer } from './ConeSideComparer'; import { LeftIntersectionEvent } from './LeftIntersectionEvent'; import { ObstacleSide } from './ObstacleSide'; import { PortLocationEvent } from './PortLocationEvent'; import { RightIntersectionEvent } from './RightIntersectionEvent'; import { RightVertexEvent } from './RightVertexEvent'; import { SweepEvent } from './SweepEvent'; import { VertexEvent } from './VertexEvent'; export declare class LineSweeperForPortLocations extends LineSweeperBase { ConeRightSideDirection: Point; ConeLeftSideDirection: Point; coneSideComparer: ConeSideComparer; visibilityGraph: VisibilityGraph; rightConeSides: RBTree; leftConeSides: RBTree; constructor(obstacles: Array, direction: Point, coneRsDir: Point, coneLsDir: Point, visibilityGraph: VisibilityGraph, portLocations: Array); PortLocations: Array; static Sweep(obstacles: Array, direction: Point, coneAngle: number, visibilityGraph: VisibilityGraph, portLocations: Array): void; Calculate(): void; ProcessEvent(p: SweepEvent): void; ProcessPointObstacleEvent(portObstacleEvent: PortObstacleEvent): void; CreateConeOnPortLocation(sweepEvent: SweepEvent): void; ProcessPortLocationEvent(portEvent: PortLocationEvent): void; ProcessLeftIntersectionEvent(leftIntersectionEvent: LeftIntersectionEvent): void; TryCreateConeClosureForLeftSide(leftSide: BrokenConeSide): void; CreateConeClosureEvent(brokenConeSide: BrokenConeSide, otherSide: ConeSide): void; ProcessRightIntersectionEvent(rightIntersectionEvent: RightIntersectionEvent): void; TryCreateConeClosureForRightSide(rightSide: BrokenConeSide): void; RemoveConesClosedBySegment(leftPoint: Point, rightPoint: Point): void; CloseConesCoveredBySegment(leftPoint: Point, rightPoint: Point, tree: RBTree): void; ProcessVertexEvent(vertexEvent: VertexEvent): void; static EllipseOnVert(vertexEvent: SweepEvent): Ellipse; static EllipseOnPolylinePoint(pp: PolylinePoint): Ellipse; ExtendSegmentToZ(segment: ConeSide): ICurve; AddConeAndEnqueueEvents(vertexEvent: VertexEvent): void; CloseConesAtRightVertex(rightVertexEvent: VertexEvent, nextVertex: PolylinePoint): void; CaseToTheLeftOfLineOrOnLineConeRp(rightVertexEvent: VertexEvent, nextVertex: PolylinePoint): void; LookForIntersectionOfObstacleSideAndRightConeSide(obstacleSideStart: Point, obstacleSideVertex: PolylinePoint): void; CreateRightIntersectionEvent(coneRightSide: ConeRightSide, intersection: Point, obstacleSideVertex: PolylinePoint): RightIntersectionEvent; GetLastNodeToTheLeftOfPointInRightSegmentTree(obstacleSideStart: Point): RBNode; LookForIntersectionOfObstacleSideAndLeftConeSide(obstacleSideStart: Point, obstacleSideVertex: PolylinePoint): void; GetFirstNodeToTheRightOfPoint(p: Point): RBNode; static PointIsToTheLeftOfSegment(p: Point, seg: ConeSide): boolean; static PointIsToTheRightOfSegment(p: Point, seg: ConeSide): boolean; FixConeLeftSideIntersections(obstSideStart: PolylinePoint, obstSideEnd: PolylinePoint, rbNode: RBNode): void; InsertToTree(tree: RBTree, coneSide: ConeSide): RBNode; CloseConesAtLeftVertex(leftVertexEvent: VertexEvent, nextVertex: PolylinePoint): void; RemoveCone(cone: Cone): void; RemoveSegFromRightTree(coneSide: ConeSide): void; RemoveSegFromLeftTree(coneSide: ConeSide): void; FixConeRightSideIntersections(obstSideStartVertex: PolylinePoint, obstSideEndVertex: PolylinePoint, rbNode: RBNode): void; LookForIntersectionWithConeLeftSide(leftNode: RBNode): void; LookForIntersectionWithConeRightSide(rightNode: RBNode): void; TryIntersectionOfConeRightSideAndObstacleConeSide(coneRightSide: ConeRightSide, seg: BrokenConeSide): void; TryIntersectionOfConeRightSideAndObstacleSide(coneRightSide: ConeRightSide, side: ObstacleSide): void; TryIntersectionOfConeLeftSideAndObstacleConeSide(coneLeftSide: ConeLeftSide, seg: BrokenConeSide): void; TryIntersectionOfConeLeftSideAndObstacleSide(coneLeftSide: ConeLeftSide, side: ObstacleSide): void; GoOverConesSeeingVertexEvent(vertexEvent: SweepEvent): void; addEdge(a: Point, b: Point): void; static VertexIsToTheLeftOfSegment(vertexEvent: SweepEvent, seg: ConeSide): boolean; static VertexIsToTheRightOfSegment(vertexEvent: SweepEvent, seg: ConeSide): boolean; FindFirstSegmentInTheRightTreeNotToTheLeftOfVertex(vertexEvent: SweepEvent): RBNode; EnqueueEventLocal(vertexEvent: RightVertexEvent): void; }