ISCE_INSAR/components/isceobj/Util/Library/geometry/src/enubasis.F

64 lines
1.5 KiB
Fortran

!c****************************************************************
subroutine enubasis(r_lat,r_lon,r_enumat)BIND(C, NAME='enubasis_C')
!c****************************************************************
!c**
!c** FILE NAME: enubasis.f
!c**
!c** DATE WRITTEN: 7/22/93
!c**
!c** PROGRAMMER:Scott Hensley
!c**
!c** FUNCTIONAL DESCRIPTION:Takes a lat and lon and returns a
!c** change of basis matrix from ENU to geocentric coordinates.
!c**
!c** ROUTINES CALLED:none
!c**
!c** NOTES: none
!c**
!c** UPDATE LOG:
!c****************************************************************
use, intrinsic :: iso_c_binding
implicit none
!c INPUT VARIABLES:
real(C_DOUBLE), value :: r_lat !latitude (deg)
real(C_DOUBLE), value :: r_lon !longitude (deg)
!c OUTPUT VARIABLES:
real(C_DOUBLE), dimension(3,3) :: r_enumat
!c LOCAL VARIABLES:
real*8 r_slt,r_clt,r_clo,r_slo
!c PROCESSING STEPS:
r_clt = cos(r_lat)
r_slt = sin(r_lat)
r_clo = cos(r_lon)
r_slo = sin(r_lon)
!c North vector
r_enumat(1,2) = -r_slt*r_clo
r_enumat(2,2) = -r_slt*r_slo
r_enumat(3,2) = r_clt
!c East vector
r_enumat(1,1) = -r_slo
r_enumat(2,1) = r_clo
r_enumat(3,1) = 0.d0
!c Up vector
r_enumat(1,3) = r_clt*r_clo
r_enumat(2,3) = r_clt*r_slo
r_enumat(3,3) = r_slt
end subroutine enubasis