@canterbury-air-patrol/sar-search-patterns
Version:
Draw SAR Search Patterns
97 lines (93 loc) • 3.19 kB
TypeScript
import React from 'react';
declare class xy {
x: number;
y: number;
constructor(x: number, y: number);
}
declare class SearchLeg {
from: xy;
to: xy;
bearing: number;
distance: number;
constructor(from: xy, to: xy, distance: number, bearing: number);
}
declare class SearchPattern {
sweepWidth: number;
searchLegs: SearchLeg[];
currentLeg: number;
searchType?: string;
constructor(sweepWidth: number);
get leg(): SearchLeg;
get complete(): boolean;
get length(): number;
getLegs(): SearchLeg[];
nextLeg(): void;
uniqueKey(): string;
}
declare class SectorSearch extends SearchPattern {
startingDirection: number;
multiplier: number;
iterations: number;
constructor(sweepWidth: number, multiplier: number, iterations: number, startingDirection: number);
generateSearchLegs(): void;
uniqueKey(): string;
}
declare class ExpandingBoxSearch extends SearchPattern {
iterations: number;
startingDirection: number;
constructor(sweepWidth: number, iterations: number, startingDirection: number);
generateSearchLegs(): void;
uniqueKey(): string;
}
declare class CreepingLineAheadSearch extends SearchPattern {
legLength: number;
legs: number;
progressDirection: number;
constructor(sweepWidth: number, legLength: number, legs: number, progressDirection: number);
generateSearchLegs(): void;
uniqueKey(): string;
}
interface SearchDisplayProps {
search: SearchPattern;
leg?: number;
}
interface SearchDisplayState {
search: SearchPattern;
}
declare class SearchDisplay extends React.Component<SearchDisplayProps, SearchDisplayState> {
canvasRef: React.RefObject<HTMLCanvasElement | null>;
minX: number;
minY: number;
maxX: number;
maxY: number;
constructor(props: SearchDisplayProps);
updateX(x: number): void;
updateY(y: number): void;
determineXYRange(searchLegs: SearchLeg[]): number[];
drawSearch(canvas: HTMLCanvasElement): void;
componentDidMount(): void;
render(): React.JSX.Element;
}
interface SearchConfigurationProps {
updateSearch: (search?: SearchPattern) => void;
}
interface SearchConfigurationState {
searchType: string;
sweepWidth: number;
legLength: number;
iterations: number;
initialDirection: number;
multiplier: number;
}
declare class SearchConfiguration extends React.Component<SearchConfigurationProps, SearchConfigurationState> {
constructor(props: SearchConfigurationProps);
handleStateUpdate(): void;
handleChangeSearch(event: React.ChangeEvent<HTMLSelectElement>): void;
handleChangeSweepWidth(event: React.ChangeEvent<HTMLInputElement>): void;
handleChangeLegLength(event: React.ChangeEvent<HTMLInputElement>): void;
handleChangeMultiplier(event: React.ChangeEvent<HTMLInputElement>): void;
handleChangeIterations(event: React.ChangeEvent<HTMLInputElement>): void;
handleChangeDirection(event: React.ChangeEvent<HTMLInputElement>): void;
render(): React.JSX.Element;
}
export { CreepingLineAheadSearch, ExpandingBoxSearch, SearchConfiguration, SearchDisplay, SearchLeg, SearchPattern, SectorSearch };