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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
//! Constants
//!
//! ```text
//! C
//! C Include file dskdsc.inc
//! C
//! C This include file declares parameters for DSK segment descriptors.
//! C
//! C- SPICELIB Version 1.0.0 08-FEB-2017 (NJB)
//! C
//! C Updated version info.
//! C
//! C 22-JAN-2016 (NJB)
//! C
//! C Added parameter for data class 2. Changed name of data
//! C class 1 parameter. Corrected data class descriptions.
//! C
//! C 13-MAY-2010 (NJB)
//! C
//! C Descriptor now contains two ID codes, one for the
//! C surface, one for the associated ephemeris object. This
//! C supports association of multiple surfaces with one
//! C ephemeris object without creating file management
//! C issues.
//! C
//! C Room was added for coordinate system definition
//! C parameters.
//! C
//! C Flag arrays and model ID/component entries were deleted.
//! C
//! C 11-SEP-2008 (NJB)
//! C
//! C
//! C DSK segment descriptors are implemented as an array of d.p.
//! C numbers. Note that each integer descriptor datum occupies one
//! C d.p. value.
//! C
//! C
//! C
//! C
//! C Segment descriptor parameters
//! C
//! C Each segment descriptor occupies a contiguous
//! C range of DAS d.p. addresses.
//! C
//! C The DSK segment descriptor layout is:
//! C
//! C +---------------------+
//! C | Surface ID code |
//! C +---------------------+
//! C | Center ID code |
//! C +---------------------+
//! C | Data class code |
//! C +---------------------+
//! C | Data type |
//! C +---------------------+
//! C | Ref frame code |
//! C +---------------------+
//! C | Coord sys code |
//! C +---------------------+
//! C | Coord sys parameters| {10 elements}
//! C +---------------------+
//! C | Min coord 1 |
//! C +---------------------+
//! C | Max coord 1 |
//! C +---------------------+
//! C | Min coord 2 |
//! C +---------------------+
//! C | Max coord 2 |
//! C +---------------------+
//! C | Min coord 3 |
//! C +---------------------+
//! C | Max coord 3 |
//! C +---------------------+
//! C | Start time |
//! C +---------------------+
//! C | Stop time |
//! C +---------------------+
//! C
//! C Parameters defining offsets for segment descriptor elements
//! C follow.
//! C
//! C
//! C Surface ID code:
//! C
//! INTEGER SRFIDX
//! PARAMETER ( SRFIDX = 1 )
//!
//! C
//! C Central ephemeris object NAIF ID:
//! C
//! INTEGER CTRIDX
//! PARAMETER ( CTRIDX = SRFIDX + 1 )
//!
//! C
//! C Data class:
//! C
//! C The "data class" is a code indicating the category of
//! C data contained in the segment.
//! C
//! INTEGER CLSIDX
//! PARAMETER ( CLSIDX = CTRIDX + 1 )
//!
//! C
//! C Data type:
//! C
//! INTEGER TYPIDX
//! PARAMETER ( TYPIDX = CLSIDX + 1 )
//!
//! C
//! C Frame ID:
//! C
//! INTEGER FRMIDX
//! PARAMETER ( FRMIDX = TYPIDX + 1 )
//!
//! C
//! C Coordinate system code:
//! C
//! INTEGER SYSIDX
//! PARAMETER ( SYSIDX = FRMIDX + 1 )
//!
//! C
//! C Coordinate system parameter start index:
//! C
//! INTEGER PARIDX
//! PARAMETER ( PARIDX = SYSIDX + 1 )
//!
//! C
//! C Number of coordinate system parameters:
//! C
//! INTEGER NSYPAR
//! PARAMETER ( NSYPAR = 10 )
//!
//! C
//! C Ranges for coordinate bounds:
//! C
//! INTEGER MN1IDX
//! PARAMETER ( MN1IDX = PARIDX + NSYPAR )
//!
//! INTEGER MX1IDX
//! PARAMETER ( MX1IDX = MN1IDX + 1 )
//!
//! INTEGER MN2IDX
//! PARAMETER ( MN2IDX = MX1IDX + 1 )
//!
//! INTEGER MX2IDX
//! PARAMETER ( MX2IDX = MN2IDX + 1 )
//!
//! INTEGER MN3IDX
//! PARAMETER ( MN3IDX = MX2IDX + 1 )
//!
//! INTEGER MX3IDX
//! PARAMETER ( MX3IDX = MN3IDX + 1 )
//!
//! C
//! C Coverage time bounds:
//! C
//! INTEGER BTMIDX
//! PARAMETER ( BTMIDX = MX3IDX + 1 )
//!
//! INTEGER ETMIDX
//! PARAMETER ( ETMIDX = BTMIDX + 1 )
//!
//! C
//! C Descriptor size (24):
//! C
//! INTEGER DSKDSZ
//! PARAMETER ( DSKDSZ = ETMIDX )
//!
//!
//!
//! C
//! C Data class values:
//! C
//! C Class 1 indicates a surface that can be represented as a
//! C single-valued function of its domain coordinates.
//! C
//! C An example is a surface defined by a function that
//! C maps each planetodetic longitude and latitude pair to
//! C a unique altitude.
//! C
//! INTEGER SVFCLS
//! PARAMETER ( SVFCLS = 1 )
//! C
//! C Class 2 indicates a general surface. Surfaces that
//! C have multiple points for a given pair of domain
//! C coordinates---for example, multiple radii for a given
//! C latitude and longitude---belong to class 2.
//! C
//! INTEGER GENCLS
//! PARAMETER ( GENCLS = 2 )
//!
//! C
//! C
//! C Coordinate system values:
//! C
//! C The coordinate system code indicates the system to which the
//! C tangential coordinate bounds belong.
//! C
//! C Code 1 refers to the planetocentric latitudinal system.
//! C
//! C In this system, the first tangential coordinate is longitude
//! C and the second tangential coordinate is latitude. The third
//! C coordinate is radius.
//! C
//! C
//! INTEGER LATSYS
//! PARAMETER ( LATSYS = 1 )
//!
//!
//! C
//! C Code 2 refers to the cylindrical system.
//! C
//! C In this system, the first tangential coordinate is radius and
//! C the second tangential coordinate is longitude. The third,
//! C orthogonal coordinate is Z.
//! C
//! C
//! INTEGER CYLSYS
//! PARAMETER ( CYLSYS = 2 )
//!
//!
//! C
//! C Code 3 refers to the rectangular system.
//! C
//! C In this system, the first tangential coordinate is X and
//! C the second tangential coordinate is Y. The third,
//! C orthogonal coordinate is Z.
//! C
//! C
//! INTEGER RECSYS
//! PARAMETER ( RECSYS = 3 )
//!
//!
//! C
//! C Code 4 refers to the planetodetic/geodetic system.
//! C
//! C In this system, the first tangential coordinate is longitude
//! C and the second tangential coordinate is planetodetic
//! C latitude. The third, orthogonal coordinate is altitude.
//! C
//! C
//! INTEGER PDTSYS
//! PARAMETER ( PDTSYS = 4 )
//!
//!
//!
//! C
//! C End of include file dskdsc.inc
//! C
//!
//! ```
pub const SRFIDX: i32 = 1;
pub const CTRIDX: i32 = ;
pub const CLSIDX: i32 = ;
pub const TYPIDX: i32 = ;
pub const FRMIDX: i32 = ;
pub const SYSIDX: i32 = ;
pub const PARIDX: i32 = ;
pub const NSYPAR: i32 = 10;
pub const MN1IDX: i32 = ;
pub const MX1IDX: i32 = ;
pub const MN2IDX: i32 = ;
pub const MX2IDX: i32 = ;
pub const MN3IDX: i32 = ;
pub const MX3IDX: i32 = ;
pub const BTMIDX: i32 = ;
pub const ETMIDX: i32 = ;
pub const DSKDSZ: i32 = ETMIDX;
pub const SVFCLS: i32 = 1;
pub const GENCLS: i32 = 2;
pub const LATSYS: i32 = 1;
pub const CYLSYS: i32 = 2;
pub const RECSYS: i32 = 3;
pub const PDTSYS: i32 = 4;