Return true if AABB is intersected by ray from origin and oriented as ray direction vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| type(vector_R8P), | intent(in) | :: | ray_origin | Ray origin. |
||
| type(vector_R8P), | intent(in) | :: | ray_direction | Ray direction. |
Test result.
pure function do_ray_intersect(self, ray_origin, ray_direction) result(do_intersect)
!< Return true if AABB is intersected by ray from origin and oriented as ray direction vector.
class(aabb_node_object), intent(in) :: self !< AABB.
type(vector_R8P), intent(in) :: ray_origin !< Ray origin.
type(vector_R8P), intent(in) :: ray_direction !< Ray direction.
logical :: do_intersect !< Test result.
do_intersect = .false.
if (allocated(self%aabb)) do_intersect = self%aabb%do_ray_intersect(ray_origin=ray_origin, ray_direction=ray_direction)
endfunction do_ray_intersect