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

67 lines
1.6 KiB
FortranFixed
Raw Normal View History

2019-01-16 19:40:08 +00:00
!c****************************************************************
subroutine lookvec(pos,r_look,r_az,r_v)BIND(C,NAME='lookvec_C')
!c****************************************************************
!c**
!c** FILE NAME: lookvec.f
!c**
!c** DATE WRITTEN: 1/25/92
!c**
!c** PROGRAMMER:Scott Hensley
!c**
!c** FUNCTIONAL DESCRIPTION: This subroutine will compute the look
!c** vector given the look angle,azimuth angle, and the position
!c** vector.
!c**
!c** ROUTINES CALLED:cross,unitvec,lincomb
!c**
!c** NOTES: none
!c**
!c** UPDATE LOG:
!c**
!c*****************************************************************
use, intrinsic :: iso_c_binding
use linalg3module
implicit none
!c INPUT VARIABLES:
type (positionType) pos
real(C_DOUBLE), value :: r_look !r_look angle
real(C_DOUBLE), value :: r_az !azimuth angle
!c OUTPUT VARIABLES:
real(C_DOUBLE), dimension(3) :: r_v !look vector
!c LOCAL VARIABLES:
real*8 r_temp(3),r_t(3),r_c(3),r_n(3),r_w(3)
integer i
!c PROCESSING STEPS:
!c compute a TCN basis vector set
call unitvec(pos%r_j,r_n)
do i=1,3
r_n(i) = -r_n(i)
enddo
call cross(r_n,pos%r_jdot,r_temp)
call unitvec(r_temp,r_c)
call cross(r_c,r_n,r_temp)
call unitvec(r_temp,r_t)
!c compute the look vector
call lincomb(cos(r_az),r_t,sin(r_az),r_c,r_temp)
call lincomb(cos(r_look),r_n,sin(r_look),r_temp,r_w)
call unitvec(r_w,r_v)
end subroutine lookvec