Return ray intersections number.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
||
| type(vector_R8P), | intent(in) | :: | ray_origin | Ray origin. |
||
| type(vector_R8P), | intent(in) | :: | ray_direction | Ray direction. |
Intersection number.
pure function ray_intersections_number(self, ray_origin, ray_direction) result(intersections_number)
!< Return ray intersections number.
class(aabb_object), intent(in) :: self !< AABB.
type(vector_R8P), intent(in) :: ray_origin !< Ray origin.
type(vector_R8P), intent(in) :: ray_direction !< Ray direction.
integer(I4P) :: intersections_number !< Intersection number.
integer(I4P) :: f !< Counter.
intersections_number = 0
if (self%facets_number > 0) then
do f=1, self%facets_number
if (self%facet(f)%do_ray_intersect(ray_origin=ray_origin, ray_direction=ray_direction)) &
intersections_number = intersections_number + 1
enddo
endif
endfunction ray_intersections_number