-
Notifications
You must be signed in to change notification settings - Fork 0
/
CompassTrip.ts
73 lines (65 loc) · 1.76 KB
/
CompassTrip.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import { UnitizedNumber, Angle, Length, UnitType } from '@speleotica/unitized'
import { CompassShot } from './CompassShot'
export enum LrudItem {
Left = 'L',
Right = 'R',
Up = 'U',
Down = 'D',
}
export type LrudOrder = [LrudItem, LrudItem, LrudItem, LrudItem]
export enum ShotItem {
Distance = 'L',
FrontsightAzimuth = 'A',
FrontsightInclination = 'D',
BacksightAzimuth = 'a',
BacksightInclination = 'd',
}
export type ShotOrder =
| [ShotItem, ShotItem, ShotItem]
| [ShotItem, ShotItem, ShotItem, ShotItem, ShotItem]
export enum LrudAssociation {
FromStation = 'F',
ToStation = 'T',
}
export enum AzimuthUnit {
Degrees = 'D',
Quads = 'Q',
Gradians = 'R',
}
export enum InclinationUnit {
Degrees = 'D',
PercentGrade = 'G',
DegreesAndMinutes = 'M',
Gradians = 'R',
DepthGauge = 'W',
}
export enum DistanceUnit {
DecimalFeet = 'D',
FeetAndInches = 'I',
Meters = 'M',
}
export type CompassTripHeader<Inc extends UnitType<Inc> = Angle> = {
cave: string
name: string
date: Date
comment?: string | null
team?: string | null
declination: UnitizedNumber<Angle>
azimuthUnit: AzimuthUnit
distanceUnit: DistanceUnit
lrudUnit: DistanceUnit
inclinationUnit: InclinationUnit
lrudOrder: LrudOrder
shotOrder: ShotOrder
hasRedundantBacksights?: boolean | null
lrudAssociation?: LrudAssociation | null
distanceCorrection?: UnitizedNumber<Length> | null
frontsightAzimuthCorrection?: UnitizedNumber<Angle> | null
frontsightInclinationCorrection?: UnitizedNumber<Inc> | null
backsightAzimuthCorrection?: UnitizedNumber<Angle> | null
backsightInclinationCorrection?: UnitizedNumber<Inc> | null
}
export type CompassTrip<Inc extends UnitType<Inc> = Angle> = {
header: CompassTripHeader<Inc>
shots: Array<CompassShot<Inc>>
}