File: cel_8h-source.html

package info (click to toggle)
python-pywcs 1.11-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 11,888 kB
  • sloc: ansic: 31,441; lex: 6,170; fortran: 6,080; sh: 3,478; python: 3,122; sed: 408; makefile: 76
file content (463 lines) | stat: -rw-r--r-- 50,297 bytes parent folder | download
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
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>WCSLIB 4.8.2: cel.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
<h1>cel.h</h1><a href="cel_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*============================================================================</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment">  WCSLIB 4.8 - an implementation of the FITS WCS standard.</span>
<a name="l00004"></a>00004 <span class="comment">  Copyright (C) 1995-2011, Mark Calabretta</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">  This file is part of WCSLIB.</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">  WCSLIB is free software: you can redistribute it and/or modify it under the</span>
<a name="l00009"></a>00009 <span class="comment">  terms of the GNU Lesser General Public License as published by the Free</span>
<a name="l00010"></a>00010 <span class="comment">  Software Foundation, either version 3 of the License, or (at your option)</span>
<a name="l00011"></a>00011 <span class="comment">  any later version.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">  WCSLIB is distributed in the hope that it will be useful, but WITHOUT ANY</span>
<a name="l00014"></a>00014 <span class="comment">  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
<a name="l00015"></a>00015 <span class="comment">  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for</span>
<a name="l00016"></a>00016 <span class="comment">  more details.</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">  You should have received a copy of the GNU Lesser General Public License</span>
<a name="l00019"></a>00019 <span class="comment">  along with WCSLIB.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00020"></a>00020 <span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">  Correspondence concerning WCSLIB may be directed to:</span>
<a name="l00022"></a>00022 <span class="comment">    Internet email: mcalabre@atnf.csiro.au</span>
<a name="l00023"></a>00023 <span class="comment">    Postal address: Dr. Mark Calabretta</span>
<a name="l00024"></a>00024 <span class="comment">                    Australia Telescope National Facility, CSIRO</span>
<a name="l00025"></a>00025 <span class="comment">                    PO Box 76</span>
<a name="l00026"></a>00026 <span class="comment">                    Epping NSW 1710</span>
<a name="l00027"></a>00027 <span class="comment">                    AUSTRALIA</span>
<a name="l00028"></a>00028 <span class="comment"></span>
<a name="l00029"></a>00029 <span class="comment">  Author: Mark Calabretta, Australia Telescope National Facility</span>
<a name="l00030"></a>00030 <span class="comment">  http://www.atnf.csiro.au/~mcalabre/index.html</span>
<a name="l00031"></a>00031 <span class="comment">  $Id: cel.h,v 4.8.1.1 2011/08/15 08:07:06 cal103 Exp cal103 $</span>
<a name="l00032"></a>00032 <span class="comment">*=============================================================================</span>
<a name="l00033"></a>00033 <span class="comment">*</span>
<a name="l00034"></a>00034 <span class="comment">* WCSLIB 4.8 - C routines that implement the FITS World Coordinate System</span>
<a name="l00035"></a>00035 <span class="comment">* (WCS) standard.  Refer to</span>
<a name="l00036"></a>00036 <span class="comment">*</span>
<a name="l00037"></a>00037 <span class="comment">*   "Representations of world coordinates in FITS",</span>
<a name="l00038"></a>00038 <span class="comment">*   Greisen, E.W., &amp; Calabretta, M.R. 2002, A&amp;A, 395, 1061 (Paper I)</span>
<a name="l00039"></a>00039 <span class="comment">*</span>
<a name="l00040"></a>00040 <span class="comment">*   "Representations of celestial coordinates in FITS",</span>
<a name="l00041"></a>00041 <span class="comment">*   Calabretta, M.R., &amp; Greisen, E.W. 2002, A&amp;A, 395, 1077 (Paper II)</span>
<a name="l00042"></a>00042 <span class="comment">*</span>
<a name="l00043"></a>00043 <span class="comment">* Refer to the README file provided with WCSLIB for an overview of the</span>
<a name="l00044"></a>00044 <span class="comment">* library.</span>
<a name="l00045"></a>00045 <span class="comment">*</span>
<a name="l00046"></a>00046 <span class="comment">*</span>
<a name="l00047"></a>00047 <span class="comment">* Summary of the cel routines</span>
<a name="l00048"></a>00048 <span class="comment">* ---------------------------</span>
<a name="l00049"></a>00049 <span class="comment">* These routines implement the part of the FITS World Coordinate System (WCS)</span>
<a name="l00050"></a>00050 <span class="comment">* standard that deals with celestial coordinates.  They define methods to be</span>
<a name="l00051"></a>00051 <span class="comment">* used for computing celestial world coordinates from intermediate world</span>
<a name="l00052"></a>00052 <span class="comment">* coordinates (a linear transformation of image pixel coordinates), and vice</span>
<a name="l00053"></a>00053 <span class="comment">* versa.  They are based on the celprm struct which contains all information</span>
<a name="l00054"></a>00054 <span class="comment">* needed for the computations.  This struct contains some elements that must</span>
<a name="l00055"></a>00055 <span class="comment">* be set by the user, and others that are maintained by these routines,</span>
<a name="l00056"></a>00056 <span class="comment">* somewhat like a C++ class but with no encapsulation.</span>
<a name="l00057"></a>00057 <span class="comment">*</span>
<a name="l00058"></a>00058 <span class="comment">* Routine celini() is provided to initialize the celprm struct with default</span>
<a name="l00059"></a>00059 <span class="comment">* values, celfree() reclaims any memory that may have been allocated to store</span>
<a name="l00060"></a>00060 <span class="comment">* an error message, and celprt() prints its contents.</span>
<a name="l00061"></a>00061 <span class="comment">*</span>
<a name="l00062"></a>00062 <span class="comment">* A setup routine, celset(), computes intermediate values in the celprm struct</span>
<a name="l00063"></a>00063 <span class="comment">* from parameters in it that were supplied by the user.  The struct always</span>
<a name="l00064"></a>00064 <span class="comment">* needs to be set up by celset() but it need not be called explicitly - refer</span>
<a name="l00065"></a>00065 <span class="comment">* to the explanation of celprm::flag.</span>
<a name="l00066"></a>00066 <span class="comment">*</span>
<a name="l00067"></a>00067 <span class="comment">* celx2s() and cels2x() implement the WCS celestial coordinate</span>
<a name="l00068"></a>00068 <span class="comment">* transformations.  In fact, they are high level driver routines for the lower</span>
<a name="l00069"></a>00069 <span class="comment">* level spherical coordinate rotation and projection routines described in</span>
<a name="l00070"></a>00070 <span class="comment">* sph.h and prj.h.</span>
<a name="l00071"></a>00071 <span class="comment">*</span>
<a name="l00072"></a>00072 <span class="comment">*</span>
<a name="l00073"></a>00073 <span class="comment">* celini() - Default constructor for the celprm struct</span>
<a name="l00074"></a>00074 <span class="comment">* ----------------------------------------------------</span>
<a name="l00075"></a>00075 <span class="comment">* celini() sets all members of a celprm struct to default values.  It should</span>
<a name="l00076"></a>00076 <span class="comment">* be used to initialize every celprm struct.</span>
<a name="l00077"></a>00077 <span class="comment">*</span>
<a name="l00078"></a>00078 <span class="comment">* Returned:</span>
<a name="l00079"></a>00079 <span class="comment">*   cel       struct celprm*</span>
<a name="l00080"></a>00080 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00081"></a>00081 <span class="comment">*</span>
<a name="l00082"></a>00082 <span class="comment">* Function return value:</span>
<a name="l00083"></a>00083 <span class="comment">*             int       Status return value:</span>
<a name="l00084"></a>00084 <span class="comment">*                         0: Success.</span>
<a name="l00085"></a>00085 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00086"></a>00086 <span class="comment">*</span>
<a name="l00087"></a>00087 <span class="comment">*</span>
<a name="l00088"></a>00088 <span class="comment">* celfree() - Destructor for the celprm struct</span>
<a name="l00089"></a>00089 <span class="comment">* --------------------------------------------</span>
<a name="l00090"></a>00090 <span class="comment">* celfree() frees any memory that may have been allocated to store an error</span>
<a name="l00091"></a>00091 <span class="comment">* message in the celprm struct.</span>
<a name="l00092"></a>00092 <span class="comment">*</span>
<a name="l00093"></a>00093 <span class="comment">* Given:</span>
<a name="l00094"></a>00094 <span class="comment">*   cel       struct celprm*</span>
<a name="l00095"></a>00095 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00096"></a>00096 <span class="comment">*</span>
<a name="l00097"></a>00097 <span class="comment">* Function return value:</span>
<a name="l00098"></a>00098 <span class="comment">*             int       Status return value:</span>
<a name="l00099"></a>00099 <span class="comment">*                         0: Success.</span>
<a name="l00100"></a>00100 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00101"></a>00101 <span class="comment">*</span>
<a name="l00102"></a>00102 <span class="comment">*</span>
<a name="l00103"></a>00103 <span class="comment">* celprt() - Print routine for the celprm struct</span>
<a name="l00104"></a>00104 <span class="comment">* ----------------------------------------------</span>
<a name="l00105"></a>00105 <span class="comment">* celprt() prints the contents of a celprm struct using wcsprintf().  Mainly</span>
<a name="l00106"></a>00106 <span class="comment">* intended for diagnostic purposes.</span>
<a name="l00107"></a>00107 <span class="comment">*</span>
<a name="l00108"></a>00108 <span class="comment">* Given:</span>
<a name="l00109"></a>00109 <span class="comment">*   cel       const struct celprm*</span>
<a name="l00110"></a>00110 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00111"></a>00111 <span class="comment">*</span>
<a name="l00112"></a>00112 <span class="comment">* Function return value:</span>
<a name="l00113"></a>00113 <span class="comment">*             int       Status return value:</span>
<a name="l00114"></a>00114 <span class="comment">*                         0: Success.</span>
<a name="l00115"></a>00115 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00116"></a>00116 <span class="comment">*</span>
<a name="l00117"></a>00117 <span class="comment">*</span>
<a name="l00118"></a>00118 <span class="comment">* celset() - Setup routine for the celprm struct</span>
<a name="l00119"></a>00119 <span class="comment">* ----------------------------------------------</span>
<a name="l00120"></a>00120 <span class="comment">* celset() sets up a celprm struct according to information supplied within</span>
<a name="l00121"></a>00121 <span class="comment">* it.</span>
<a name="l00122"></a>00122 <span class="comment">*</span>
<a name="l00123"></a>00123 <span class="comment">* Note that this routine need not be called directly; it will be invoked by</span>
<a name="l00124"></a>00124 <span class="comment">* celx2s() and cels2x() if celprm::flag is anything other than a predefined</span>
<a name="l00125"></a>00125 <span class="comment">* magic value.</span>
<a name="l00126"></a>00126 <span class="comment">*</span>
<a name="l00127"></a>00127 <span class="comment">* Given and returned:</span>
<a name="l00128"></a>00128 <span class="comment">*   cel       struct celprm*</span>
<a name="l00129"></a>00129 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00130"></a>00130 <span class="comment">*</span>
<a name="l00131"></a>00131 <span class="comment">* Function return value:</span>
<a name="l00132"></a>00132 <span class="comment">*             int       Status return value:</span>
<a name="l00133"></a>00133 <span class="comment">*                         0: Success.</span>
<a name="l00134"></a>00134 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00135"></a>00135 <span class="comment">*                         2: Invalid projection parameters.</span>
<a name="l00136"></a>00136 <span class="comment">*                         3: Invalid coordinate transformation parameters.</span>
<a name="l00137"></a>00137 <span class="comment">*                         4: Ill-conditioned coordinate transformation</span>
<a name="l00138"></a>00138 <span class="comment">*                            parameters.</span>
<a name="l00139"></a>00139 <span class="comment">*</span>
<a name="l00140"></a>00140 <span class="comment">*                       For returns &gt; 1, a detailed error message is set in</span>
<a name="l00141"></a>00141 <span class="comment">*                       celprm::err if enabled, see wcserr_enable().</span>
<a name="l00142"></a>00142 <span class="comment">*</span>
<a name="l00143"></a>00143 <span class="comment">*</span>
<a name="l00144"></a>00144 <span class="comment">* celx2s() - Pixel-to-world celestial transformation</span>
<a name="l00145"></a>00145 <span class="comment">* --------------------------------------------------</span>
<a name="l00146"></a>00146 <span class="comment">* celx2s() transforms (x,y) coordinates in the plane of projection to</span>
<a name="l00147"></a>00147 <span class="comment">* celestial coordinates (lng,lat).</span>
<a name="l00148"></a>00148 <span class="comment">*</span>
<a name="l00149"></a>00149 <span class="comment">* Given and returned:</span>
<a name="l00150"></a>00150 <span class="comment">*   cel       struct celprm*</span>
<a name="l00151"></a>00151 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00152"></a>00152 <span class="comment">*</span>
<a name="l00153"></a>00153 <span class="comment">* Given:</span>
<a name="l00154"></a>00154 <span class="comment">*   nx,ny     int       Vector lengths.</span>
<a name="l00155"></a>00155 <span class="comment">*</span>
<a name="l00156"></a>00156 <span class="comment">*   sxy,sll   int       Vector strides.</span>
<a name="l00157"></a>00157 <span class="comment">*</span>
<a name="l00158"></a>00158 <span class="comment">*   x,y       const double[]</span>
<a name="l00159"></a>00159 <span class="comment">*                       Projected coordinates in pseudo "degrees".</span>
<a name="l00160"></a>00160 <span class="comment">*</span>
<a name="l00161"></a>00161 <span class="comment">* Returned:</span>
<a name="l00162"></a>00162 <span class="comment">*   phi,theta double[]  Longitude and latitude (phi,theta) in the native</span>
<a name="l00163"></a>00163 <span class="comment">*                       coordinate system of the projection [deg].</span>
<a name="l00164"></a>00164 <span class="comment">*</span>
<a name="l00165"></a>00165 <span class="comment">*   lng,lat   double[]  Celestial longitude and latitude (lng,lat) of the</span>
<a name="l00166"></a>00166 <span class="comment">*                       projected point [deg].</span>
<a name="l00167"></a>00167 <span class="comment">*</span>
<a name="l00168"></a>00168 <span class="comment">*   stat      int[]     Status return value for each vector element:</span>
<a name="l00169"></a>00169 <span class="comment">*                         0: Success.</span>
<a name="l00170"></a>00170 <span class="comment">*                         1: Invalid value of (x,y).</span>
<a name="l00171"></a>00171 <span class="comment">*</span>
<a name="l00172"></a>00172 <span class="comment">* Function return value:</span>
<a name="l00173"></a>00173 <span class="comment">*             int       Status return value:</span>
<a name="l00174"></a>00174 <span class="comment">*                         0: Success.</span>
<a name="l00175"></a>00175 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00176"></a>00176 <span class="comment">*                         2: Invalid projection parameters.</span>
<a name="l00177"></a>00177 <span class="comment">*                         3: Invalid coordinate transformation parameters.</span>
<a name="l00178"></a>00178 <span class="comment">*                         4: Ill-conditioned coordinate transformation</span>
<a name="l00179"></a>00179 <span class="comment">*                            parameters.</span>
<a name="l00180"></a>00180 <span class="comment">*                         5: One or more of the (x,y) coordinates were</span>
<a name="l00181"></a>00181 <span class="comment">*                            invalid, as indicated by the stat vector.</span>
<a name="l00182"></a>00182 <span class="comment">*</span>
<a name="l00183"></a>00183 <span class="comment">*                       For returns &gt; 1, a detailed error message is set in</span>
<a name="l00184"></a>00184 <span class="comment">*                       celprm::err if enabled, see wcserr_enable().</span>
<a name="l00185"></a>00185 <span class="comment">*</span>
<a name="l00186"></a>00186 <span class="comment">*</span>
<a name="l00187"></a>00187 <span class="comment">* cels2x() - World-to-pixel celestial transformation</span>
<a name="l00188"></a>00188 <span class="comment">* --------------------------------------------------</span>
<a name="l00189"></a>00189 <span class="comment">* cels2x() transforms celestial coordinates (lng,lat) to (x,y) coordinates in</span>
<a name="l00190"></a>00190 <span class="comment">* the plane of projection.</span>
<a name="l00191"></a>00191 <span class="comment">*</span>
<a name="l00192"></a>00192 <span class="comment">* Given and returned:</span>
<a name="l00193"></a>00193 <span class="comment">*   cel       struct celprm*</span>
<a name="l00194"></a>00194 <span class="comment">*                       Celestial transformation parameters.</span>
<a name="l00195"></a>00195 <span class="comment">*</span>
<a name="l00196"></a>00196 <span class="comment">* Given:</span>
<a name="l00197"></a>00197 <span class="comment">*   nlng,nlat int       Vector lengths.</span>
<a name="l00198"></a>00198 <span class="comment">*</span>
<a name="l00199"></a>00199 <span class="comment">*   sll,sxy   int       Vector strides.</span>
<a name="l00200"></a>00200 <span class="comment">*</span>
<a name="l00201"></a>00201 <span class="comment">*   lng,lat   const double[]</span>
<a name="l00202"></a>00202 <span class="comment">*                       Celestial longitude and latitude (lng,lat) of the</span>
<a name="l00203"></a>00203 <span class="comment">*                       projected point [deg].</span>
<a name="l00204"></a>00204 <span class="comment">*</span>
<a name="l00205"></a>00205 <span class="comment">* Returned:</span>
<a name="l00206"></a>00206 <span class="comment">*   phi,theta double[]  Longitude and latitude (phi,theta) in the native</span>
<a name="l00207"></a>00207 <span class="comment">*                       coordinate system of the projection [deg].</span>
<a name="l00208"></a>00208 <span class="comment">*</span>
<a name="l00209"></a>00209 <span class="comment">*   x,y       double[]  Projected coordinates in pseudo "degrees".</span>
<a name="l00210"></a>00210 <span class="comment">*</span>
<a name="l00211"></a>00211 <span class="comment">*   stat      int[]     Status return value for each vector element:</span>
<a name="l00212"></a>00212 <span class="comment">*                         0: Success.</span>
<a name="l00213"></a>00213 <span class="comment">*                         1: Invalid value of (lng,lat).</span>
<a name="l00214"></a>00214 <span class="comment">*</span>
<a name="l00215"></a>00215 <span class="comment">* Function return value:</span>
<a name="l00216"></a>00216 <span class="comment">*             int       Status return value:</span>
<a name="l00217"></a>00217 <span class="comment">*                         0: Success.</span>
<a name="l00218"></a>00218 <span class="comment">*                         1: Null celprm pointer passed.</span>
<a name="l00219"></a>00219 <span class="comment">*                         2: Invalid projection parameters.</span>
<a name="l00220"></a>00220 <span class="comment">*                         3: Invalid coordinate transformation parameters.</span>
<a name="l00221"></a>00221 <span class="comment">*                         4: Ill-conditioned coordinate transformation</span>
<a name="l00222"></a>00222 <span class="comment">*                            parameters.</span>
<a name="l00223"></a>00223 <span class="comment">*                         6: One or more of the (lng,lat) coordinates were</span>
<a name="l00224"></a>00224 <span class="comment">*                            invalid, as indicated by the stat vector.</span>
<a name="l00225"></a>00225 <span class="comment">*</span>
<a name="l00226"></a>00226 <span class="comment">*                       For returns &gt; 1, a detailed error message is set in</span>
<a name="l00227"></a>00227 <span class="comment">*                       celprm::err if enabled, see wcserr_enable().</span>
<a name="l00228"></a>00228 <span class="comment">*</span>
<a name="l00229"></a>00229 <span class="comment">*</span>
<a name="l00230"></a>00230 <span class="comment">* celprm struct - Celestial transformation parameters</span>
<a name="l00231"></a>00231 <span class="comment">* ---------------------------------------------------</span>
<a name="l00232"></a>00232 <span class="comment">* The celprm struct contains information required to transform celestial</span>
<a name="l00233"></a>00233 <span class="comment">* coordinates.  It consists of certain members that must be set by the user</span>
<a name="l00234"></a>00234 <span class="comment">* ("given") and others that are set by the WCSLIB routines ("returned").  Some</span>
<a name="l00235"></a>00235 <span class="comment">* of the latter are supplied for informational purposes and others are for</span>
<a name="l00236"></a>00236 <span class="comment">* internal use only.</span>
<a name="l00237"></a>00237 <span class="comment">*</span>
<a name="l00238"></a>00238 <span class="comment">* Returned celprm struct members must not be modified by the user.</span>
<a name="l00239"></a>00239 <span class="comment">*</span>
<a name="l00240"></a>00240 <span class="comment">*   int flag</span>
<a name="l00241"></a>00241 <span class="comment">*     (Given and returned) This flag must be set to zero whenever any of the</span>
<a name="l00242"></a>00242 <span class="comment">*     following celprm struct members are set or changed:</span>
<a name="l00243"></a>00243 <span class="comment">*</span>
<a name="l00244"></a>00244 <span class="comment">*       - celprm::offset,</span>
<a name="l00245"></a>00245 <span class="comment">*       - celprm::phi0,</span>
<a name="l00246"></a>00246 <span class="comment">*       - celprm::theta0,</span>
<a name="l00247"></a>00247 <span class="comment">*       - celprm::ref[4],</span>
<a name="l00248"></a>00248 <span class="comment">*       - celprm::prj:</span>
<a name="l00249"></a>00249 <span class="comment">*         - prjprm::code,</span>
<a name="l00250"></a>00250 <span class="comment">*         - prjprm::r0,</span>
<a name="l00251"></a>00251 <span class="comment">*         - prjprm::pv[],</span>
<a name="l00252"></a>00252 <span class="comment">*         - prjprm::phi0,</span>
<a name="l00253"></a>00253 <span class="comment">*         - prjprm::theta0.</span>
<a name="l00254"></a>00254 <span class="comment">*</span>
<a name="l00255"></a>00255 <span class="comment">*     This signals the initialization routine, celset(), to recompute the</span>
<a name="l00256"></a>00256 <span class="comment">*     returned members of the celprm struct.  celset() will reset flag to</span>
<a name="l00257"></a>00257 <span class="comment">*     indicate that this has been done.</span>
<a name="l00258"></a>00258 <span class="comment">*</span>
<a name="l00259"></a>00259 <span class="comment">*   int offset</span>
<a name="l00260"></a>00260 <span class="comment">*     (Given) If true (non-zero), an offset will be applied to (x,y) to</span>
<a name="l00261"></a>00261 <span class="comment">*     force (x,y) = (0,0) at the fiducial point, (phi_0,theta_0).</span>
<a name="l00262"></a>00262 <span class="comment">*     Default is 0 (false).</span>
<a name="l00263"></a>00263 <span class="comment">*</span>
<a name="l00264"></a>00264 <span class="comment">*   double phi0</span>
<a name="l00265"></a>00265 <span class="comment">*     (Given) The native longitude, phi_0 [deg], and ...</span>
<a name="l00266"></a>00266 <span class="comment">*</span>
<a name="l00267"></a>00267 <span class="comment">*   double theta0</span>
<a name="l00268"></a>00268 <span class="comment">*     (Given) ... the native latitude, theta_0 [deg], of the fiducial point,</span>
<a name="l00269"></a>00269 <span class="comment">*     i.e. the point whose celestial coordinates are given in</span>
<a name="l00270"></a>00270 <span class="comment">*     celprm::ref[1:2].  If undefined (set to a magic value by prjini()) the</span>
<a name="l00271"></a>00271 <span class="comment">*     initialization routine, celset(), will set this to a projection-specific</span>
<a name="l00272"></a>00272 <span class="comment">*     default.</span>
<a name="l00273"></a>00273 <span class="comment">*</span>
<a name="l00274"></a>00274 <span class="comment">*   double ref[4]</span>
<a name="l00275"></a>00275 <span class="comment">*     (Given) The first pair of values should be set to the celestial</span>
<a name="l00276"></a>00276 <span class="comment">*     longitude and latitude of the fiducial point [deg] - typically right</span>
<a name="l00277"></a>00277 <span class="comment">*     ascension and declination.  These are given by the CRVALia keywords in</span>
<a name="l00278"></a>00278 <span class="comment">*     FITS.</span>
<a name="l00279"></a>00279 <span class="comment">*</span>
<a name="l00280"></a>00280 <span class="comment">*     (Given and returned) The second pair of values are the native longitude,</span>
<a name="l00281"></a>00281 <span class="comment">*     phi_p [deg], and latitude, theta_p [deg], of the celestial pole (the</span>
<a name="l00282"></a>00282 <span class="comment">*     latter is the same as the celestial latitude of the native pole,</span>
<a name="l00283"></a>00283 <span class="comment">*     delta_p) and these are given by the FITS keywords LONPOLEa and LATPOLEa</span>
<a name="l00284"></a>00284 <span class="comment">*     (or by PVi_2a and PVi_3a attached to the longitude axis which take</span>
<a name="l00285"></a>00285 <span class="comment">*     precedence if defined).</span>
<a name="l00286"></a>00286 <span class="comment">*</span>
<a name="l00287"></a>00287 <span class="comment">*     LONPOLEa defaults to phi_0 (see above) if the celestial latitude of the</span>
<a name="l00288"></a>00288 <span class="comment">*     fiducial point of the projection is greater than or equal to the native</span>
<a name="l00289"></a>00289 <span class="comment">*     latitude, otherwise phi_0 + 180 [deg].  (This is the condition for the</span>
<a name="l00290"></a>00290 <span class="comment">*     celestial latitude to increase in the same direction as the native</span>
<a name="l00291"></a>00291 <span class="comment">*     latitude at the fiducial point.)  ref[2] may be set to UNDEFINED (from</span>
<a name="l00292"></a>00292 <span class="comment">*     wcsmath.h) or 999.0 to indicate that the correct default should be</span>
<a name="l00293"></a>00293 <span class="comment">*     substituted.</span>
<a name="l00294"></a>00294 <span class="comment">*</span>
<a name="l00295"></a>00295 <span class="comment">*     theta_p, the native latitude of the celestial pole (or equally the</span>
<a name="l00296"></a>00296 <span class="comment">*     celestial latitude of the native pole, delta_p) is often determined</span>
<a name="l00297"></a>00297 <span class="comment">*     uniquely by CRVALia and LONPOLEa in which case LATPOLEa is ignored.</span>
<a name="l00298"></a>00298 <span class="comment">*     However, in some circumstances there are two valid solutions for theta_p</span>
<a name="l00299"></a>00299 <span class="comment">*     and LATPOLEa is used to choose between them.  LATPOLEa is set in ref[3]</span>
<a name="l00300"></a>00300 <span class="comment">*     and the solution closest to this value is used to reset ref[3].  It is</span>
<a name="l00301"></a>00301 <span class="comment">*     therefore legitimate, for example, to set ref[3] to +90.0 to choose the</span>
<a name="l00302"></a>00302 <span class="comment">*     more northerly solution - the default if the LATPOLEa keyword is omitted</span>
<a name="l00303"></a>00303 <span class="comment">*     from the FITS header.  For the special case where the fiducial point of</span>
<a name="l00304"></a>00304 <span class="comment">*     the projection is at native latitude zero, its celestial latitude is</span>
<a name="l00305"></a>00305 <span class="comment">*     zero, and LONPOLEa = +/- 90.0 then the celestial latitude of the native</span>
<a name="l00306"></a>00306 <span class="comment">*     pole is not determined by the first three reference values and LATPOLEa</span>
<a name="l00307"></a>00307 <span class="comment">*     specifies it completely.</span>
<a name="l00308"></a>00308 <span class="comment">*</span>
<a name="l00309"></a>00309 <span class="comment">*     The returned value, celprm::latpreq, specifies how LATPOLEa was actually</span>
<a name="l00310"></a>00310 <span class="comment">*     used.</span>
<a name="l00311"></a>00311 <span class="comment">*</span>
<a name="l00312"></a>00312 <span class="comment">*   struct prjprm prj</span>
<a name="l00313"></a>00313 <span class="comment">*     (Given and returned) Projection parameters described in the prologue to</span>
<a name="l00314"></a>00314 <span class="comment">*     prj.h.</span>
<a name="l00315"></a>00315 <span class="comment">*</span>
<a name="l00316"></a>00316 <span class="comment">*   double euler[5]</span>
<a name="l00317"></a>00317 <span class="comment">*     (Returned) Euler angles and associated intermediaries derived from the</span>
<a name="l00318"></a>00318 <span class="comment">*     coordinate reference values.  The first three values are the Z-, X-, and</span>
<a name="l00319"></a>00319 <span class="comment">*     Z'-Euler angles [deg], and the remaining two are the cosine and sine of</span>
<a name="l00320"></a>00320 <span class="comment">*     the X-Euler angle.</span>
<a name="l00321"></a>00321 <span class="comment">*</span>
<a name="l00322"></a>00322 <span class="comment">*   int latpreq</span>
<a name="l00323"></a>00323 <span class="comment">*     (Returned) For informational purposes, this indicates how the LATPOLEa</span>
<a name="l00324"></a>00324 <span class="comment">*     keyword was used</span>
<a name="l00325"></a>00325 <span class="comment">*       - 0: Not required, theta_p (== delta_p) was determined uniquely by the</span>
<a name="l00326"></a>00326 <span class="comment">*            CRVALia and LONPOLEa keywords.</span>
<a name="l00327"></a>00327 <span class="comment">*       - 1: Required to select between two valid solutions of theta_p.</span>
<a name="l00328"></a>00328 <span class="comment">*       - 2: theta_p was specified solely by LATPOLEa.</span>
<a name="l00329"></a>00329 <span class="comment">*</span>
<a name="l00330"></a>00330 <span class="comment">*   int isolat</span>
<a name="l00331"></a>00331 <span class="comment">*     (Returned) True if the spherical rotation preserves the magnitude of the</span>
<a name="l00332"></a>00332 <span class="comment">*     latitude, which occurs iff the axes of the native and celestial</span>
<a name="l00333"></a>00333 <span class="comment">*     coordinates are coincident.  It signals an opportunity to cache</span>
<a name="l00334"></a>00334 <span class="comment">*     intermediate calculations common to all elements in a vector</span>
<a name="l00335"></a>00335 <span class="comment">*     computation.</span>
<a name="l00336"></a>00336 <span class="comment">*</span>
<a name="l00337"></a>00337 <span class="comment">*   struct wcserr *err</span>
<a name="l00338"></a>00338 <span class="comment">*     (Returned) If enabled, when an error status is returned this struct</span>
<a name="l00339"></a>00339 <span class="comment">*     contains detailed information about the error, see wcserr_enable().</span>
<a name="l00340"></a>00340 <span class="comment">*</span>
<a name="l00341"></a>00341 <span class="comment">*   void *padding</span>
<a name="l00342"></a>00342 <span class="comment">*     (An unused variable inserted for alignment purposes only.)</span>
<a name="l00343"></a>00343 <span class="comment">*</span>
<a name="l00344"></a>00344 <span class="comment">* Global variable: const char *cel_errmsg[] - Status return messages</span>
<a name="l00345"></a>00345 <span class="comment">* ------------------------------------------------------------------</span>
<a name="l00346"></a>00346 <span class="comment">* Status messages to match the status value returned from each function.</span>
<a name="l00347"></a>00347 <span class="comment">*</span>
<a name="l00348"></a>00348 <span class="comment">*===========================================================================*/</span>
<a name="l00349"></a>00349 
<a name="l00350"></a>00350 <span class="preprocessor">#ifndef WCSLIB_CEL</span>
<a name="l00351"></a>00351 <span class="preprocessor"></span><span class="preprocessor">#define WCSLIB_CEL</span>
<a name="l00352"></a>00352 <span class="preprocessor"></span>
<a name="l00353"></a>00353 <span class="preprocessor">#include "<a class="code" href="prj_8h.html">prj.h</a>"</span>
<a name="l00354"></a>00354 <span class="preprocessor">#include "<a class="code" href="wcserr_8h.html">wcserr.h</a>"</span>
<a name="l00355"></a>00355 
<a name="l00356"></a>00356 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00357"></a>00357 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00358"></a>00358 <span class="preprocessor">#endif</span>
<a name="l00359"></a>00359 <span class="preprocessor"></span>
<a name="l00360"></a>00360 
<a name="l00361"></a>00361 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="cel_8h.html#2ac33dbe3aa2efff60543213b0a691f5">cel_errmsg</a>[];
<a name="l00362"></a>00362 
<a name="l00363"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31">00363</a> <span class="keyword">enum</span> <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31">cel_errmsg_enum</a> {
<a name="l00364"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c314ca7a593593157772f3788801138dd12">00364</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c314ca7a593593157772f3788801138dd12">CELERR_SUCCESS</a>         = 0,   <span class="comment">/* Success. */</span>
<a name="l00365"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c317fa1e5cb9c23e5f138638dad3f938e1e">00365</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c317fa1e5cb9c23e5f138638dad3f938e1e">CELERR_NULL_POINTER</a>    = 1,   <span class="comment">/* Null celprm pointer passed. */</span>
<a name="l00366"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c3133a743bdcdd17bae9c6961234ed6b642">00366</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c3133a743bdcdd17bae9c6961234ed6b642">CELERR_BAD_PARAM</a>       = 2,   <span class="comment">/* Invalid projection parameters. */</span>
<a name="l00367"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31367cf89b74764f9462bfa50c2eb50fb6">00367</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31367cf89b74764f9462bfa50c2eb50fb6">CELERR_BAD_COORD_TRANS</a> = 3,   <span class="comment">/* Invalid coordinate transformation</span>
<a name="l00368"></a>00368 <span class="comment">                                   parameters. */</span>
<a name="l00369"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31cb1dec1ea393b198b93a26425ee901a2">00369</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31cb1dec1ea393b198b93a26425ee901a2">CELERR_ILL_COORD_TRANS</a> = 4,   <span class="comment">/* Ill-conditioned coordinated transformation</span>
<a name="l00370"></a>00370 <span class="comment">                                   parameters. */</span>
<a name="l00371"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c3144042efc5a9894182447dfcbcd24e1d4">00371</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c3144042efc5a9894182447dfcbcd24e1d4">CELERR_BAD_PIX</a>         = 5,   <span class="comment">/* One or more of the (x,y) coordinates were</span>
<a name="l00372"></a>00372 <span class="comment">                                   invalid. */</span>
<a name="l00373"></a><a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31ac8beaf37d754d1a7a7aab5307a2140b">00373</a>   <a class="code" href="cel_8h.html#b20292954fb236dafb2cd78aee121c31ac8beaf37d754d1a7a7aab5307a2140b">CELERR_BAD_WORLD</a>       = 6    <span class="comment">/* One or more of the (lng,lat) coordinates</span>
<a name="l00374"></a>00374 <span class="comment">                                   were invalid. */</span>
<a name="l00375"></a>00375 };
<a name="l00376"></a>00376 
<a name="l00377"></a><a class="code" href="structcelprm.html">00377</a> <span class="keyword">struct </span><a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> {
<a name="l00378"></a>00378   <span class="comment">/* Initialization flag (see the prologue above).                          */</span>
<a name="l00379"></a>00379   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00380"></a><a class="code" href="structcelprm.html#408a39c1d060d5b32f884f8a8c60aaa2">00380</a>   <span class="keywordtype">int</span>    <a class="code" href="structcelprm.html#408a39c1d060d5b32f884f8a8c60aaa2">flag</a>;                  <span class="comment">/* Set to zero to force initialization.     */</span>
<a name="l00381"></a>00381 
<a name="l00382"></a>00382   <span class="comment">/* Parameters to be provided (see the prologue above).                    */</span>
<a name="l00383"></a>00383   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00384"></a><a class="code" href="structcelprm.html#74585275b64c292b394b74f2f19a8048">00384</a>   <span class="keywordtype">int</span>    <a class="code" href="structcelprm.html#74585275b64c292b394b74f2f19a8048">offset</a>;                <span class="comment">/* Force (x,y) = (0,0) at (phi_0,theta_0).  */</span>
<a name="l00385"></a><a class="code" href="structcelprm.html#011e38b3a5505fdc13855348571bfad1">00385</a>   <span class="keywordtype">double</span> <a class="code" href="structcelprm.html#b034f85dc785113c396c9864cdddfe52">phi0</a>, <a class="code" href="structcelprm.html#011e38b3a5505fdc13855348571bfad1">theta0</a>;          <span class="comment">/* Native coordinates of fiducial point.    */</span>
<a name="l00386"></a><a class="code" href="structcelprm.html#3f9ae993e97f0e73e3f59117929eeda6">00386</a>   <span class="keywordtype">double</span> <a class="code" href="structcelprm.html#3f9ae993e97f0e73e3f59117929eeda6">ref</a>[4];                <span class="comment">/* Celestial coordinates of fiducial        */</span>
<a name="l00387"></a>00387                                 <span class="comment">/* point and native coordinates of          */</span>
<a name="l00388"></a>00388                                 <span class="comment">/* celestial pole.                          */</span>
<a name="l00389"></a>00389 
<a name="l00390"></a><a class="code" href="structcelprm.html#be1991f17c0ecb857d5bd30a6a689b84">00390</a>   <span class="keyword">struct </span><a class="code" href="structprjprm.html" title="Projection parameters.">prjprm</a> <a class="code" href="structcelprm.html#be1991f17c0ecb857d5bd30a6a689b84">prj</a>;            <span class="comment">/* Projection parameters (see prj.h).       */</span>
<a name="l00391"></a>00391 
<a name="l00392"></a>00392   <span class="comment">/* Information derived from the parameters supplied.                      */</span>
<a name="l00393"></a>00393   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00394"></a><a class="code" href="structcelprm.html#80ea2023638ededd2760cc9a260c456b">00394</a>   <span class="keywordtype">double</span> <a class="code" href="structcelprm.html#80ea2023638ededd2760cc9a260c456b">euler</a>[5];              <span class="comment">/* Euler angles and functions thereof.      */</span>
<a name="l00395"></a><a class="code" href="structcelprm.html#756c8f0991a748ab47361b0215c4577b">00395</a>   <span class="keywordtype">int</span>    <a class="code" href="structcelprm.html#756c8f0991a748ab47361b0215c4577b">latpreq</a>;               <span class="comment">/* LATPOLEa requirement.                    */</span>
<a name="l00396"></a><a class="code" href="structcelprm.html#7bb5e1ff4d73c884d73eeb0f8f2677d7">00396</a>   <span class="keywordtype">int</span>    <a class="code" href="structcelprm.html#7bb5e1ff4d73c884d73eeb0f8f2677d7">isolat</a>;                <span class="comment">/* True if |latitude| is preserved.         */</span>
<a name="l00397"></a>00397 
<a name="l00398"></a>00398   <span class="comment">/* Error handling                                                         */</span>
<a name="l00399"></a>00399   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00400"></a><a class="code" href="structcelprm.html#1b9cbfd7cfa2306464d57dc4acd03b06">00400</a>   <span class="keyword">struct </span><a class="code" href="structwcserr.html" title="Error message handling.">wcserr</a> *<a class="code" href="structcelprm.html#1b9cbfd7cfa2306464d57dc4acd03b06">err</a>;
<a name="l00401"></a>00401 
<a name="l00402"></a>00402   <span class="comment">/* Private                                                                */</span>
<a name="l00403"></a>00403   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00404"></a><a class="code" href="structcelprm.html#07d1785f7d7a8793555147140757956d">00404</a>   <span class="keywordtype">void</span>   *<a class="code" href="structcelprm.html#07d1785f7d7a8793555147140757956d">padding</a>;              <span class="comment">/* (Dummy inserted for alignment purposes.) */</span>
<a name="l00405"></a>00405 };
<a name="l00406"></a>00406 
<a name="l00407"></a>00407 <span class="comment">/* Size of the celprm struct in int units, used by the Fortran wrappers. */</span>
<a name="l00408"></a><a class="code" href="cel_8h.html#055ad88aa219a0207e221d62e03d2e23">00408</a> <span class="preprocessor">#define CELLEN (sizeof(struct celprm)/sizeof(int))</span>
<a name="l00409"></a>00409 <span class="preprocessor"></span>
<a name="l00410"></a>00410 
<a name="l00411"></a>00411 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#1fe1b137ade45ea28e61f44d4708fb77" title="Default constructor for the celprm struct.">celini</a>(<span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel);
<a name="l00412"></a>00412 
<a name="l00413"></a>00413 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#39bb7bf8e545c200191d51884ecfb89b" title="Destructor for the celprm struct.">celfree</a>(<span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel);
<a name="l00414"></a>00414 
<a name="l00415"></a>00415 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#db2e4565f61a9de5fe278d9035850dc3" title="Print routine for the celprm struct.">celprt</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel);
<a name="l00416"></a>00416 
<a name="l00417"></a>00417 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#b0f67d1727750616f71c7bfcb3a037b6" title="Setup routine for the celprm struct.">celset</a>(<span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel);
<a name="l00418"></a>00418 
<a name="l00419"></a>00419 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#1fe7f134670262eb54b6049c0275a27b" title="Pixel-to-world celestial transformation.">celx2s</a>(<span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel, <span class="keywordtype">int</span> nx, <span class="keywordtype">int</span> ny, <span class="keywordtype">int</span> sxy, <span class="keywordtype">int</span> sll,
<a name="l00420"></a>00420            <span class="keyword">const</span> <span class="keywordtype">double</span> x[], <span class="keyword">const</span> <span class="keywordtype">double</span> y[],
<a name="l00421"></a>00421            <span class="keywordtype">double</span> phi[], <span class="keywordtype">double</span> theta[], <span class="keywordtype">double</span> lng[], <span class="keywordtype">double</span> lat[],
<a name="l00422"></a>00422            <span class="keywordtype">int</span> stat[]);
<a name="l00423"></a>00423 
<a name="l00424"></a>00424 <span class="keywordtype">int</span> <a class="code" href="cel_8h.html#6661c05703158b0808038b7d551f1ea1" title="World-to-pixel celestial transformation.">cels2x</a>(<span class="keyword">struct</span> <a class="code" href="structcelprm.html" title="Celestial transformation parameters.">celprm</a> *cel, <span class="keywordtype">int</span> nlng, <span class="keywordtype">int</span> nlat, <span class="keywordtype">int</span> sll, <span class="keywordtype">int</span> sxy,
<a name="l00425"></a>00425            <span class="keyword">const</span> <span class="keywordtype">double</span> lng[], <span class="keyword">const</span> <span class="keywordtype">double</span> lat[],
<a name="l00426"></a>00426            <span class="keywordtype">double</span> phi[], <span class="keywordtype">double</span> theta[], <span class="keywordtype">double</span> x[], <span class="keywordtype">double</span> y[],
<a name="l00427"></a>00427            <span class="keywordtype">int</span> stat[]);
<a name="l00428"></a>00428 
<a name="l00429"></a>00429 
<a name="l00430"></a>00430 <span class="comment">/* Deprecated. */</span>
<a name="l00431"></a><a class="code" href="cel_8h.html#0474e3e2d6c39249acbe58cedd573e84">00431</a> <span class="preprocessor">#define celini_errmsg cel_errmsg</span>
<a name="l00432"></a><a class="code" href="cel_8h.html#9e188b582ee4eb815466e86bb684fc82">00432</a> <span class="preprocessor"></span><span class="preprocessor">#define celprt_errmsg cel_errmsg</span>
<a name="l00433"></a><a class="code" href="cel_8h.html#2fe5a30084717036a54e7f0a920da105">00433</a> <span class="preprocessor"></span><span class="preprocessor">#define celset_errmsg cel_errmsg</span>
<a name="l00434"></a><a class="code" href="cel_8h.html#f72e24d2f169c3c343c55c880a74050f">00434</a> <span class="preprocessor"></span><span class="preprocessor">#define celx2s_errmsg cel_errmsg</span>
<a name="l00435"></a><a class="code" href="cel_8h.html#c398f2bea2deac6d86c10a7b3efca966">00435</a> <span class="preprocessor"></span><span class="preprocessor">#define cels2x_errmsg cel_errmsg</span>
<a name="l00436"></a>00436 <span class="preprocessor"></span>
<a name="l00437"></a>00437 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00438"></a>00438 <span class="preprocessor"></span>}
<a name="l00439"></a>00439 <span class="preprocessor">#endif</span>
<a name="l00440"></a>00440 <span class="preprocessor"></span>
<a name="l00441"></a>00441 <span class="preprocessor">#endif </span><span class="comment">/* WCSLIB_CEL */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 4 19:02:30 2011 for WCSLIB 4.8.2 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>