Files
maps-saas/apps/api/dist/tactical/tactical.service.d.ts
T

109 lines
3.5 KiB
TypeScript

import { RedisService } from '../common/redis.service';
import { ArtilleryMissionRequestDto, TacticalSymbolDto } from './dto/tactical.dto';
export interface LosPoint {
index: number;
distanceMeters: number;
lat: number;
lng: number;
groundElevationMeters: number;
earthCurvatureSagittaMeters: number;
apparentElevationMeters: number;
sightRayElevationMeters: number;
marginMeters: number;
isVisible: boolean;
isDeadGround: boolean;
horizonAngleMils: number;
}
export interface LineOfSightResponse {
isDirectlyVisible: boolean;
status: 'CLEAR_LINE_OF_SIGHT' | 'OBSTRUCTED';
statusAr: string;
summary: {
totalDistanceMeters: number;
totalDistanceKm: number;
azimuthDegrees: number;
verticalAngleDegrees: number;
verticalAngleMilsNato: number;
verticalAngleMilsSoviet: number;
observerGroundElevationMeters: number;
observerTotalElevationMeters: number;
targetGroundElevationMeters: number;
targetTotalElevationMeters: number;
minElevationMeters: number;
maxElevationMeters: number;
deadGroundPercentage: number;
samplePointsCount: number;
stepMeters?: number;
};
highestObstacle: {
distanceMeters: number;
lat: number;
lng: number;
elevationMeters: number;
sightRayElevationMeters: number;
penetrationMeters: number;
} | null;
observer: {
lat: number;
lng: number;
heightOffsetMeters: number;
groundElevationMeters: number;
totalElevationMeters: number;
};
target: {
lat: number;
lng: number;
heightOffsetMeters: number;
groundElevationMeters: number;
totalElevationMeters: number;
};
profile?: LosPoint[];
}
export declare class TacticalService {
private readonly redisService;
private readonly logger;
constructor(redisService: RedisService);
computeLineOfSight(observerLat: number, observerLng: number, targetLat: number, targetLng: number, observerHeight?: number, targetHeight?: number, samplesCount?: number, stepMeters?: number, compact?: boolean): Promise<LineOfSightResponse>;
calculateArtilleryFireMission(dto: ArtilleryMissionRequestDto): Promise<{
fireMissionId: string;
caliber: string;
muzzleVelocityMs: number;
distanceMeters: number;
distanceKm: number;
azimuthDegrees: number;
azimuthMils: number;
gunElevationMeters: number;
targetElevationMeters: number;
apexAltitudeMeters: number;
timeOfFlightSeconds: number;
lowAngle: {
degrees: number;
mils: number;
};
highAngle: {
degrees: number;
mils: number;
};
hasCrestClearance: boolean;
criticalObstacle: any;
trajectoryPoints: any[];
}>;
assessHelicopterLandingZones(lat: number, lng: number, radiusMeters?: number): Promise<{
centerLat: number;
centerLng: number;
searchRadiusMeters: number;
totalAssessed: number;
suitableCount: number;
zones: any[];
}>;
saveScenario(name: string, symbols: TacticalSymbolDto[]): Promise<{
success: boolean;
count: number;
name: string;
}>;
getScenario(name: string): Promise<TacticalSymbolDto[]>;
private haversineDistance;
private calculateBearing;
private estimateElevation;
}