Changeset 41966 for branches/eam_branches/ipp-20211108
- Timestamp:
- Dec 25, 2021, 2:19:38 PM (5 years ago)
- Location:
- branches/eam_branches/ipp-20211108/Ohana/src/libdvo
- Files:
-
- 2 edited
-
include/libdvo_astro.h (modified) (1 diff)
-
src/coordops.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20211108/Ohana/src/libdvo/include/libdvo_astro.h
r40291 r41966 27 27 PROJ_PAR, // pseudocyl 28 28 PROJ_ZPN, // zenithal 29 PROJ_MOL, // pseudocyl 29 30 } OhanaProjection; 30 31 -
branches/eam_branches/ipp-20211108/Ohana/src/libdvo/src/coordops.c
r39926 r41966 266 266 switch (proj) { 267 267 case PROJ_AIT: 268 Z2 = (1.0 - SQ(RAD_DEG*0.25*L) - SQ(RAD_DEG*0.5*M)); 269 if (Z2 < 0) return (FALSE); 270 Z = sqrt (Z2); 271 alpha = 2.0 * DEG_RAD * atan2 (RAD_DEG*0.5*Z*L, 2.0*Z2 - 1.0); 272 delta = DEG_RAD * asin (RAD_DEG*M*Z); 273 break; 274 268 Z2 = (1.0 - SQ(RAD_DEG*0.25*L) - SQ(RAD_DEG*0.5*M)); 269 if (Z2 < 0) return (FALSE); 270 Z = sqrt (Z2); 271 alpha = 2.0 * DEG_RAD * atan2 (RAD_DEG*0.5*Z*L, 2.0*Z2 - 1.0); 272 delta = DEG_RAD * asin (RAD_DEG*M*Z); 273 break; 275 274 case PROJ_GLS: 276 275 /* L,M in degrees, alpha,delta in degrees */ … … 283 282 delta = 3 * DEG_RAD * asin (M/180.0); 284 283 break; 284 case PROJ_MOL: 285 Z = sqrt(2.0 - SQ(RAD_DEG*M)); 286 alpha = M_PI*L/(2*Z); 287 double T1 = asin(RAD_DEG*M*M_SQRT1_2)/90.0 + M*Z/180.0; 288 delta = DEG_RAD*asin(T1); 285 289 default: 286 290 return (FALSE); … … 448 452 *M = 180.0 * sin (RAD_DEG*theta/3.0); 449 453 return (TRUE); 454 case PROJ_MOL: 455 phi = ra - coords[0].crval1; 456 theta = dec - coords[0].crval2; 457 // given theta, solve for gamma: 458 double So = sin(theta*RAD_DEG); 459 double Go = theta; 460 if (theta > +80) { Go = theta - 10.0;} 461 if (theta < -80) { Go = theta + 10.0;} 462 for (int iter = 0; iter < 5; iter ++) { 463 double Fo = (Go / 90.0) + sin(Go*M_PI/90.0) / M_PI - So; 464 double dFdG = (1 / 90.0) + cos(Go*M_PI/90.0) / 90.0; 465 Go -= Fo / dFdG; 466 } 467 *L = 2*phi * cos(RAD_DEG*Go) * M_SQRT2 / M_PI; 468 *M = 180.0 * sin(RAD_DEG*Go) * M_SQRT2 / M_PI; 469 return (TRUE); 450 470 default: 451 471 return (FALSE); … … 1059 1079 if (!strncmp(&ctype[4], "-GLS", 4)) return PROJ_GLS; 1060 1080 if (!strncmp(&ctype[4], "-PAR", 4)) return PROJ_PAR; 1081 if (!strncmp(&ctype[4], "-MOL", 4)) return PROJ_MOL; 1061 1082 return PROJ_NONE; 1062 1083 } … … 1079 1100 case PROJ_GLS: strcpy(&ctype[4], "-GLS"); return TRUE; 1080 1101 case PROJ_PAR: strcpy(&ctype[4], "-PAR"); return TRUE; 1102 case PROJ_MOL: strcpy(&ctype[4], "-MOL"); return TRUE; 1081 1103 case PROJ_NONE: return FALSE; 1082 1104 } … … 1103 1125 case PROJ_GLS: 1104 1126 case PROJ_PAR: 1127 case PROJ_MOL: 1105 1128 return PROJ_MODE_PSEUDOCYL; 1106 1129 default:
Note:
See TracChangeset
for help on using the changeset viewer.
