region_extent Subroutine

private subroutine region_extent(self, region, drawn, z0, r0, z1, r1)

A region's surface at the last update, along the frame's +z axis (away from the light; the body's center at the origin): drawn, from z0 (radius r0) to z1 (radius r1).

Type Bound

ShadowCones

Arguments

Type IntentOptional Attributes Name
class(ShadowCones), intent(in) :: self
integer, intent(in) :: region

SHADOW_UMBRA, SHADOW_PENUMBRA or SHADOW_ANTUMBRA

logical, intent(out) :: drawn

it has a surface and is drawn

real(kind=wp), intent(out), optional :: z0

scene units

real(kind=wp), intent(out), optional :: r0

scene units

real(kind=wp), intent(out), optional :: z1

scene units

real(kind=wp), intent(out), optional :: r1

scene units


Calls

proc~~region_extent~~CallsGraph proc~region_extent ShadowCones%region_extent proc~region_index region_index proc~region_extent->proc~region_index

Source Code

    subroutine region_extent(self, region, drawn, z0, r0, z1, r1)
        class(ShadowCones), intent(in) :: self
        integer, intent(in) :: region                       !! SHADOW_UMBRA, SHADOW_PENUMBRA or SHADOW_ANTUMBRA
        logical, intent(out) :: drawn                       !! it has a surface and is drawn
        real(wp), intent(out), optional :: z0, r0, z1, r1   !! scene units
        type(ShadowRegion) :: g
        integer :: k
        k = region_index(region)
        if (k > 0) g = self%region(k)
        drawn = k > 0 .and. g%drawn
        if (present(z0)) z0 = g%z0
        if (present(r0)) r0 = g%r0
        if (present(z1)) z1 = g%z1
        if (present(r1)) r1 = g%r1
    end subroutine region_extent