Compute true anomaly [0, 360] deg.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in), | dimension(6) | :: | rv | [position,velocity] vector |
true anomaly (deg)
pure function true_anomaly(rv) result(tru)
implicit none
real(wp),dimension(6),intent(in) :: rv !! [position,velocity] vector
real(wp) :: tru !! true anomaly (deg)
real(wp),dimension(3) :: r !! position vector
real(wp),dimension(3) :: v !! velocity vector
real(wp) :: p,ecc,inc,raan,aop !! orbital elements
r = rv(1:3)
v = rv(4:6)
call rv_to_orbital_elements(body_moon%mu,r,v,p,ecc,inc,raan,aop,tru)
tru = tru*rad2deg ! convert to deg
if (tru<zero) tru = tru + 360.0_wp ! wrap from 0 to 369
end function true_anomaly