A region's frustum into its mesh (uploaded), and shown or hidden.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(ShadowRegion), | intent(in) | :: | g |
the region (umbra, penumbra or antumbra) |
subroutine write_region(g) type(ShadowRegion), intent(in) :: g !! the region (umbra, penumbra or antumbra) real(c_float), dimension(:,:), pointer :: v, normals, uv integer(c_int32_t), dimension(:), pointer :: indices real(wp) :: a integer :: i, n if (.not. c_associated(g%mesh)) return n = n_around if (g%drawn) then call mesh_arrays(g%mesh, 2 * n, 6 * n, v, normals, uv, indices) do i = 1, n a = 2.0_wp * pi * (i - 1) / n v(:, i) = real([g%r0 * cos(a), g%r0 * sin(a), g%z0], c_float) v(:, n + i) = real([g%r1 * cos(a), g%r1 * sin(a), g%z1], c_float) end do call check_status(vkf_mesh_vertices_changed(g%mesh), 'shadow') end if call check_status(vkf_switch_set(g%switch, merge(1_c_int, 0_c_int, g%drawn)), 'shadow') end subroutine write_region