67 lines
1.6 KiB
FortranFixed
67 lines
1.6 KiB
FortranFixed
|
|
||
|
!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
|