Convert from cartesian coordinates (in the x-y plane) to polar coordinates (radius,angle)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk) | :: | x |
X coordinate |
|||
real(kind=rk) | :: | y |
Y coordinate |
Polar coordinates, radius (first entry) and angle (second entry)
function cart2polar(x,y) result(polar) ! -------------------------------------------------------------------------- !> X coordinate real(kind=rk) :: x !> Y coordinate real(kind=rk) :: y !> Polar coordinates, radius (first entry) and angle (second entry) real(kind=rk) :: polar(2) ! -------------------------------------------------------------------------- ! -------------------------------------------------------------------------- polar(1) = sqrt(x*x + y*y) ! Atan2 is not defined when both coordinates are zero. To cover this ! situation correctly, we define the angle to be 0. if(polar(1) > epsilon(1.0_rk) ) then polar(2) = atan2(y,x) else polar(2) = 0.0_rk end if end function cart2polar