double theta; \ double m, n; \ double two_r_m, two_r_n, rm, rn, hm, hn; \ double cp0, sp0; #define PROJ_LIB__ #include <lib_proj.h> PROJ_HEAD(oea, "Oblated Equal Area") "\n\tMisc Sph\n\tn= m= theta="; FORWARD(s_forward); /* sphere */ double Az, M, N, cp, sp, cl, shz; cp = cos(lp.phi); sp = sin(lp.phi); cl = cos(lp.lam); Az = proj_atan2(cp * sin(lp.lam), P->cp0 * sp - P->sp0 * cp * cl) + P->theta; shz = sin(0.5 * proj_acos(P->sp0 * sp + P->cp0 * cp * cl)); M = proj_asin(shz * sin(Az)); N = proj_asin(shz * cos(Az) * cos(M) / cos(M * P->two_r_m)); xy.y = P->n * sin(N * P->two_r_n); xy.x = P->m * sin(M * P->two_r_m) * cos(N) / cos(N * P->two_r_n); return (xy); } INVERSE(s_inverse); /* sphere */ double N, M, xp, yp, z, Az, cz, sz, cAz; N = P->hn * proj_asin(xy.y * P->rn); M = P->hm * proj_asin(xy.x * P->rm * cos(N * P->two_r_n) / cos(N)); xp = 2. * sin(M); yp = 2. * sin(N) * cos(M * P->two_r_m) / cos(M); cAz = cos(Az = proj_atan2(xp, yp) - P->theta); z = 2. * proj_asin(0.5 * hypot(xp, yp)); sz = sin(z);
*/ #define PROJ_PARMS__ \ double n, C_x, C_y; #define PROJ_LIB__ #include <lib_proj.h> PROJ_HEAD(urmfps, "Urmaev Flat-Polar Sinusoidal") "\n\tPCyl, Sph.\n\tn="; PROJ_HEAD(wag1, "Wagner I (Kavraisky VI)") "\n\tPCyl, Sph."; PROJ_HEAD(weren2, "Werenskiold II") "\n\tPCyl, Sph."; #define UCX 0.8773826753016616405461459345 #define UCY 1.139753528477388820996781626 #define WCX 0.8773826753016616405461459345 #define WCY 1.316074012952492460819218901 #define WCP 0.8660254037844386467637231707 #define WNM 1.139753528477388820996781625 FORWARD(s_forward); /* sphere */ lp.phi = proj_asin(P->n * sin(lp.phi)); xy.x = P->C_x * lp.lam * cos(lp.phi); xy.y = P->C_y * lp.phi; return (xy); } INVERSE(s_inverse); /* sphere */ xy.y /= P->C_y; lp.phi = proj_asin(sin(xy.y) / P->n); lp.lam = xy.x / (P->C_x * cos(xy.y)); return (lp); } FREEUP; if (P) free(P); } static PROJ * setup(PROJ *P) {
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define PROJ_LIB__ # include <lib_proj.h> PROJ_HEAD(wag2, "Wagner II") "\n\tPCyl., Sph."; #define CX 0.9248327337222211159780313106 #define CY 1.387249100583331673967046966 #define CM2 0.8855017059025996450524064573 #define CM1 0.8802234877744129284498330453 FORWARD(s_forward); /* spheroid */ (void) P; /* avoid warning */ lp.phi = proj_asin(CM1 * sin(CM2 * lp.phi)); xy.x = CX * lp.lam * cos(lp.phi); xy.y = CY * lp.phi; return (xy); } INVERSE(s_inverse); /* spheroid */ (void) P; /* avoid warning */ lp.phi = xy.y / CY; lp.lam = xy.x / (CX * cos(lp.phi)); lp.phi = proj_asin(sin(lp.phi) / CM1) / CM2; return (lp); } FREEUP; if (P) free(P); } ENTRY0(wag2) P->es = 0.; P->inv = s_inverse; P->fwd = s_forward; ENDENTRY(P) /* ** $Log: proj_wag2.c,v $