Exemple #1
0
** 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_PARMS__ \
  double qp; \
  double *apa;
#define PROJ_LIB__
# include  <lib_proj.h>
PROJ_HEAD(cea, "Equal Area Cylindrical") "\n\tCyl, Sph&Ell\n\tlat_ts=(0)";
# define EPS  1e-10
FORWARD(e_forward); /* ellipsoid */
xy.x = P->k0 * lp.lam;
xy.y = .5 * proj_qsfn(lp.phi, P->apa) / P->k0;
return (xy);
}
FORWARD(s_forward); /* spheroid */
xy.x = P->k0 * lp.lam;
xy.y = sin(lp.phi) / P->k0;
return (xy);
}
INVERSE(e_inverse); /* ellipsoid */
lp.phi = proj_auth_inv(asin( 2. * xy.y * P->k0 / P->qp), P->apa);
lp.lam = xy.x / P->k0;
return (lp);
}
INVERSE(s_inverse); /* spheroid */
double t;
Exemple #2
0
#define sinph0	P->sinb1
#define cosph0	P->cosb1
#define EPS10	1.e-10
#define NITER	20
#define CONV	1.e-10
#define N_POLE	0
#define S_POLE	1
#define EQUIT	2
#define OBLIQ	3
FORWARD(e_forward); /* ellipsoid */
	double coslam, sinlam, sinphi, q, sinb=0., cosb=0., b=0.;

	coslam = cos(lp.lam);
	sinlam = sin(lp.lam);
	sinphi = sin(lp.phi);
	q = proj_qsfn(lp.phi, P->apa);
	if (P->mode == OBLIQ || P->mode == EQUIT) {
		sinb = q / P->qp;
		cosb = sqrt(1. - sinb * sinb);
	}
	switch (P->mode) {
	case OBLIQ:
		b = 1. + P->sinb1 * sinb + P->cosb1 * cosb * coslam;
		break;
	case EQUIT:
		b = 1. + cosb * coslam;
		break;
	case N_POLE:
		b = HALFPI + lp.phi;
		q = P->qp - q;
		break;