|
1 | | -void wr_enode(JsonWriter&w,double jd_tdb,int tz_off, |
2 | | - const EclipsePointMeta*meta=nullptr){ |
3 | | - if(!std::isfinite(jd_tdb)){ |
4 | | - w.null_val(); |
5 | | - return; |
6 | | - } |
7 | | - double jd_td=TimeScale::tdb_to_tt(jd_tdb); |
8 | | - double jd_utc=TimeScale::tdb_to_utc(jd_tdb); |
9 | | - double jd_ut1=jd_utc; |
10 | | - w.obj_begin(); |
11 | | - w.key("jd"); |
12 | | - w.value(jd_utc); |
13 | | - w.key("jd_tdb"); |
14 | | - w.value(jd_tdb); |
15 | | - w.key("jd_td"); |
16 | | - w.value(jd_td); |
17 | | - w.key("jd_ut1"); |
18 | | - w.value(jd_ut1); |
19 | | - w.key("jd_utc"); |
20 | | - w.value(jd_utc); |
21 | | - w.key("utc_iso"); |
22 | | - w.value(fmt_iso(jd_utc,0,true)); |
23 | | - w.key("ut1_iso"); |
24 | | - w.value(fmt_iso(jd_ut1,0,true)); |
25 | | - w.key("td_iso"); |
26 | | - w.value(fmt_iso(jd_td,0,true)); |
27 | | - w.key("loc_iso"); |
28 | | - w.value(fmt_iso(jd_utc,tz_off,true)); |
29 | | - w.key("zen_lat_deg"); |
30 | | - if(meta&&std::isfinite(meta->zen_lat_deg)){ |
31 | | - w.value(meta->zen_lat_deg); |
32 | | - }else{ |
33 | | - w.null_val(); |
34 | | - } |
35 | | - w.key("zen_lon_deg"); |
36 | | - if(meta&&std::isfinite(meta->zen_lon_deg)){ |
37 | | - w.value(meta->zen_lon_deg); |
38 | | - }else{ |
39 | | - w.null_val(); |
40 | | - } |
41 | | - w.key("pa_deg"); |
42 | | - if(meta&&std::isfinite(meta->pa_deg)){ |
43 | | - w.value(meta->pa_deg); |
44 | | - }else{ |
45 | | - w.null_val(); |
46 | | - } |
47 | | - w.key("axis_deg"); |
48 | | - if(meta&&std::isfinite(meta->axis_deg)){ |
49 | | - w.value(meta->axis_deg); |
50 | | - }else{ |
51 | | - w.null_val(); |
52 | | - } |
53 | | - w.obj_end(); |
54 | | -} |
55 | | - |
56 | | -void wr_num_or_null(JsonWriter&w,double v){ |
57 | | - if(std::isfinite(v)){ |
58 | | - w.value(v); |
59 | | - }else{ |
60 | | - w.null_val(); |
61 | | - } |
62 | | -} |
63 | | - |
64 | | -void wr_geo_json(JsonWriter&w,const EclipseGeoCoord&g){ |
65 | | - w.obj_begin(); |
66 | | - w.key("ra_deg"); |
67 | | - wr_num_or_null(w,g.ra_deg); |
68 | | - w.key("dec_deg"); |
69 | | - wr_num_or_null(w,g.dec_deg); |
70 | | - w.key("sd_deg"); |
71 | | - wr_num_or_null(w,g.sd_deg); |
72 | | - w.key("ehp_deg"); |
73 | | - wr_num_or_null(w,g.ehp_deg); |
74 | | - w.obj_end(); |
75 | | -} |
76 | | - |
77 | | -void wr_lib_json(JsonWriter&w,const EclipseLibration&lib){ |
78 | | - w.obj_begin(); |
79 | | - w.key("l_deg"); |
80 | | - wr_num_or_null(w,lib.l_deg); |
81 | | - w.key("b_deg"); |
82 | | - wr_num_or_null(w,lib.b_deg); |
83 | | - w.key("c_deg"); |
84 | | - wr_num_or_null(w,lib.c_deg); |
85 | | - w.obj_end(); |
86 | | -} |
87 | | - |
88 | | -void wr_num_txt(std::ostream&os,double v){ |
89 | | - if(std::isfinite(v)){ |
90 | | - os<<v; |
91 | | - }else{ |
92 | | - os<<"null"; |
93 | | - } |
94 | | -} |
95 | | - |
96 | | -void wr_node_txt(std::ostream&os,double jd_tdb,const EclipsePointMeta&meta){ |
97 | | - if(!std::isfinite(jd_tdb)){ |
98 | | - os<<"null\tnull\tnull\tnull\tnull\tnull\tnull"; |
99 | | - return; |
100 | | - } |
101 | | - double jd_td=TimeScale::tdb_to_tt(jd_tdb); |
102 | | - double jd_utc=TimeScale::tdb_to_utc(jd_tdb); |
103 | | - double jd_ut1=jd_utc; |
104 | | - wr_num_txt(os,jd_ut1); |
105 | | - os<<"\t"; |
106 | | - wr_num_txt(os,jd_td); |
107 | | - os<<"\t"; |
108 | | - wr_num_txt(os,jd_utc); |
109 | | - os<<"\t"; |
110 | | - wr_num_txt(os,meta.zen_lat_deg); |
111 | | - os<<"\t"; |
112 | | - wr_num_txt(os,meta.zen_lon_deg); |
113 | | - os<<"\t"; |
114 | | - wr_num_txt(os,meta.pa_deg); |
115 | | - os<<"\t"; |
116 | | - wr_num_txt(os,meta.axis_deg); |
117 | | -} |
118 | | - |
119 | | -void wr_node_kv(std::ostream&os,const std::string&tag,double jd_tdb, |
120 | | - const EclipsePointMeta&meta){ |
121 | | - double jd_td=std::numeric_limits<double>::quiet_NaN(); |
122 | | - double jd_utc=std::numeric_limits<double>::quiet_NaN(); |
123 | | - double jd_ut1=std::numeric_limits<double>::quiet_NaN(); |
124 | | - if(std::isfinite(jd_tdb)){ |
125 | | - jd_td=TimeScale::tdb_to_tt(jd_tdb); |
126 | | - jd_utc=TimeScale::tdb_to_utc(jd_tdb); |
127 | | - jd_ut1=jd_utc; |
128 | | - } |
129 | | - os<<tag<<"_jd_ut1="; |
130 | | - wr_num_txt(os,jd_ut1); |
131 | | - os<<"\n"; |
132 | | - os<<tag<<"_jd_td="; |
133 | | - wr_num_txt(os,jd_td); |
134 | | - os<<"\n"; |
135 | | - os<<tag<<"_jd="; |
136 | | - wr_num_txt(os,jd_utc); |
137 | | - os<<"\n"; |
138 | | - os<<tag<<"_zen_lat_deg="; |
139 | | - wr_num_txt(os,meta.zen_lat_deg); |
140 | | - os<<"\n"; |
141 | | - os<<tag<<"_zen_lon_deg="; |
142 | | - wr_num_txt(os,meta.zen_lon_deg); |
143 | | - os<<"\n"; |
144 | | - os<<tag<<"_pa_deg="; |
145 | | - wr_num_txt(os,meta.pa_deg); |
146 | | - os<<"\n"; |
147 | | - os<<tag<<"_axis_deg="; |
148 | | - wr_num_txt(os,meta.axis_deg); |
149 | | - os<<"\n"; |
150 | | -} |
151 | | - |
152 | | -std::string node_liso(double jd_tdb,int tz_off){ |
153 | | - if(!std::isfinite(jd_tdb)){ |
154 | | - return "null"; |
155 | | - } |
156 | | - double jd_utc=TimeScale::tdb_to_utc(jd_tdb); |
157 | | - return fmt_iso(jd_utc,tz_off,true); |
158 | | -} |
159 | | - |
160 | | -void wr_ecljson(JsonWriter&w,const LunarEclipse&ecl,int year,int tz_off){ |
161 | | - w.obj_begin(); |
162 | | - w.key("kind"); |
163 | | - w.value("lunar_eclipse"); |
164 | | - w.key("year"); |
165 | | - w.value(year); |
166 | | - w.key("has"); |
167 | | - w.value(ecl.has); |
168 | | - w.key("type"); |
169 | | - w.value(ecl.type); |
170 | | - w.key("pen_mag"); |
171 | | - wr_num_or_null(w,ecl.pen_mag); |
172 | | - w.key("umb_mag"); |
173 | | - wr_num_or_null(w,ecl.umb_mag); |
174 | | - w.key("rp_re"); |
175 | | - wr_num_or_null(w,ecl.rp_re); |
176 | | - w.key("ru_re"); |
177 | | - wr_num_or_null(w,ecl.ru_re); |
178 | | - w.key("opp_rp_re"); |
179 | | - wr_num_or_null(w,ecl.opp_rp_re); |
180 | | - w.key("opp_ru_re"); |
181 | | - wr_num_or_null(w,ecl.opp_ru_re); |
182 | | - w.key("dur_pen_sec"); |
183 | | - wr_num_or_null(w,ecl.dur_pen_sec); |
184 | | - w.key("dur_umb_sec"); |
185 | | - wr_num_or_null(w,ecl.dur_umb_sec); |
186 | | - w.key("dur_tot_sec"); |
187 | | - wr_num_or_null(w,ecl.dur_tot_sec); |
188 | | - w.key("dt_max_sec"); |
189 | | - wr_num_or_null(w,ecl.dt_max_sec); |
190 | | - w.key("moon_dist_km"); |
191 | | - wr_num_or_null(w,ecl.moon_dist_km); |
192 | | - w.key("gamma"); |
193 | | - wr_num_or_null(w,ecl.gamma); |
194 | | - w.key("eps_deg"); |
195 | | - wr_num_or_null(w,ecl.eps_deg); |
196 | | - w.key("sun_geo"); |
197 | | - wr_geo_json(w,ecl.sun_geo); |
198 | | - w.key("moon_geo"); |
199 | | - wr_geo_json(w,ecl.moon_geo); |
200 | | - w.key("lib"); |
201 | | - wr_lib_json(w,ecl.lib); |
202 | | - w.key("p1"); |
203 | | - wr_enode(w,ecl.jd_tdb_p1,tz_off,&ecl.p1_meta); |
204 | | - w.key("u1"); |
205 | | - wr_enode(w,ecl.jd_tdb_u1,tz_off,&ecl.u1_meta); |
206 | | - w.key("opp"); |
207 | | - wr_enode(w,ecl.jd_tdb_opp,tz_off,&ecl.opp_meta); |
208 | | - w.key("max"); |
209 | | - wr_enode(w,ecl.jd_tdb_max,tz_off,&ecl.max_meta); |
210 | | - w.key("u4"); |
211 | | - wr_enode(w,ecl.jd_tdb_u4,tz_off,&ecl.u4_meta); |
212 | | - w.key("p4"); |
213 | | - wr_enode(w,ecl.jd_tdb_p4,tz_off,&ecl.p4_meta); |
214 | | - w.key("u2"); |
215 | | - wr_enode(w,ecl.jd_tdb_u2,tz_off,&ecl.u2_meta); |
216 | | - w.key("u3"); |
217 | | - wr_enode(w,ecl.jd_tdb_u3,tz_off,&ecl.u3_meta); |
218 | | - w.obj_end(); |
219 | | -} |
220 | | - |
221 | 1 | void wr_ecltxt(std::ostream&os,const std::vector<LunarEclipse>&items,int tz_off){ |
222 | 2 | os<<"type\tpen_mag\tumb_mag\tgamma\teps_deg\tdt_max_sec\tdur_pen_sec\t" |
223 | 3 | "dur_umb_sec\tdur_tot_sec\trp_re\tru_re\topp_rp_re\topp_ru_re\t" |
|
0 commit comments