\ cancel mode verify	
!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++!
! mp_lambert_cc.jnl --  Sets up variables for a Lambert Conformal Conic
!                  projection using 'curvilinear coordinates' code in Ferret v4.50
!	
! contributed by:
! Lev Tarasov
! 6/10
!uses equations from http://mathworld.wolfram.com/LambertConformalConicProjection.html
! Description:  Sets up variables for a Lambert Conformal Conic map of the world
!
! Usage:                   arg1               arg2            arg 3      arg 4
!  go mp_lambert_cc [central meridian] [ref parallel] [standard paralle1 and 2]
!
! arg 1 - longitude used for the center of the projection
! arg 2 - latitude used for the center of the projection
! arg 3 - standard paralell 1 (latitude)
! arg 4 - standard paralell 2 ("")

! NOTE: there is no error checking on the argument bounds. Longitude
! bounds likely vary with your grid definition (-180 to 180 or
! 0 to 360), latitude is  -90 to 90

! Example:
!  use coads_climatology 
!  go mp_lambert_cc long1 lat0 lat1 lat2
!  set grid sst
!  shade sst[l=1], x_page, y_page
!
!

!if `$2%0% gt 90` then
!    query/ignore $3"<The standard parallel must be between -90 and 90"
!elif `$2%0% lt (-90)` then
!    query/ignore $3"<The standard parallel must be between -90 and 90"
!endif

let/quiet mp_x = x
let/quiet mp_central_meridian = $1
let/quiet mp_y = y
let/quiet mp_central_parallel = $2
let/quiet mp_standard_parallel = $2
let/quiet mp_standard_parallel1 = $3
let/quiet mp_standard_parallel2 = $4

let/quiet Pi = 3.14159265
let/quiet deg2rad = Pi / 180.0

let/quiet mp_lambda0 = mp_central_meridian * deg2rad
let/quiet mp_lambda = mp_x * deg2rad
let/quiet mp_phi = mp_y * deg2rad
let/quiet mp_phi0 = mp_central_parallel * deg2rad
let/quiet mp_phi1 = mp_standard_parallel1 * deg2rad
let/quiet mp_phi2 = mp_standard_parallel2 * deg2rad

let/quiet RN =LN(cos(mp_phi1)/cos(mp_phi2)) / LN(tan(0.25*Pi + 0.5*mp_phi2)/tan(0.25*Pi + 0.5*mp_phi1) )   !eq 4

let/quiet mRN = (-1.0)*RN
let/quiet RF = cos(mp_phi1)*EXP( RN*LN(tan(0.25*Pi + 0.5*mp_phi1) ) ) / RN !eq 3

let/quiet mp_R = RF * EXP( mRN*LN(tan(0.25*Pi + 0.5*mp_phi) ) )   !eq 5
let/quiet mp_R0 = RF * EXP( mRN*LN(tan(0.25*Pi + 0.5*mp_phi0) ) ) !eq 6

let/quiet x_page = mp_R * sin(RN*(mp_lambda-mp_lambda0))     ! eqn (1)
let/quiet y_page = mp_R0 - mp_R * cos(RN*(mp_lambda-mp_lambda0)) !eqn 2

let/quiet mp_mask = if mp_R gt 0 then 1

!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++!
set mode/last verify
