import { Rectangle } from '..'; import { ICurve } from '../math/geometry/icurve'; import { Point } from '../math/geometry/point'; import { Polyline } from '../math/geometry/polyline'; import { PolylinePoint } from '../math/geometry/polylinePoint'; import { RectangleNode } from '../math/geometry/RTree/rectangleNode'; import { Shape } from './shape'; export declare class InteractiveObstacleCalculator { IgnoreTightPadding: boolean; /** if set to true the vertices of the loose polylines would be randomly shifted by a small amont */ randomizationShift: number; ObstaclesIntersectLine(a: Point, b: Point): boolean; LoosePadding: number; tightPolylinesToLooseDistances: Map; LooseObstacles: Polyline[]; TightObstacles: Set; OverlapsDetected: boolean; private static PadCorner; static CurveIsClockwise(iCurve: ICurve, pointInside: Point): boolean; static PaddedPolylineBoundaryOfNode(curve: ICurve, padding: number, randomizePoints?: boolean): Polyline; /** surrounds the given polyline with the given offset, optionally randomizes the output */ static LoosePolylineWithFewCorners(tightPolyline: Polyline, p: number, randomizationShift: number): Polyline; static CreateLoosePolylineOnBisectors(tightPolyline: Polyline, offset: number, randomizationShift: number): Polyline; static CreateRectNodeOfPolyline(polyline: Polyline): RectangleNode; CreateLooseObstacles(): void; Obstacles: Array; TightPadding: number; CreateTightObstacles(): void; Calculate(): void; IsEmpty(): boolean; constructor(obstacles: Array, tightPadding: number, loosePadding: number, ignoreTightPadding: boolean); ObstaclesIntersectICurve(curve: ICurve): boolean; static CurveIntersectsRectangleNode(curve: ICurve, curveBox: Rectangle, rectNode: RectangleNode): boolean; static PointIsInside(point: Point, curve: ICurve): boolean; CreateTightObstaclesIgnoringTightPadding(): void; CreateTightObstacles_(): RectangleNode; static CalculateTightPolyline(tightObstacles: Set, tightPadding: number, curve: ICurve): void; static CalculateHierarchy(polylines: Array): RectangleNode; static RemovePossibleOverlapsInTightPolylinesAndCalculateHierarchy(tightObstacleSet: Set, tightToShapes?: Map>): RectangleNode; static MapToInt(objects: T[]): Map; static ReplaceTightObstaclesWithConvexHulls(tightObsts: Set, overlappingPairSet: Array<[Polyline, Polyline]>, tightToShapes?: Map>): RectangleNode; RootOfTightHierarchy: RectangleNode; RootOfLooseHierarchy: RectangleNode; static OneCurveLiesInsideOfOther(polyA: ICurve, polyB: ICurve): boolean; static PolylinesIntersect(a: Polyline, b: Polyline): boolean; static GetOverlappedPairSet(rootOfObstacleHierarchy: RectangleNode): Set<[Polyline, Polyline]>; static BisectorPoints(tightPolyline: Polyline, offset: number): IterableIterator; static GetStickingVertexOnBisector(pp: PolylinePoint, p: number, t: { skip: boolean; }): Point; static LooseDistCoefficient: number; static FindMaxPaddingForTightPolyline(hierarchy: RectangleNode, polyline: Polyline, desiredPadding: number): number; static GetPaddedCorner(first: PolylinePoint, second: PolylinePoint, third: PolylinePoint, padding: number): { a: Point; b: Point; numberOfPoints: number; }; static CornerIsNotTooSharp(u: Point, v: Point, w: Point): boolean; static CreatePaddedPolyline(poly: Polyline, padding: number, randomizePoints?: boolean): Polyline; }