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 | Intent | Optional | 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 |
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