version 0.6.0

Data Types

interface  mod_ray_tracing::t_ray
 Definition of a ray. More...
 
interface  mod_ray_tracing::t_intersection
 Definition of an intersection. More...
 
type  mod_ray_tracing::t_intersection_list
 Sorted list of intersections. More...
 

Functions/Subroutines

pure type(t_ray) function mod_ray_tracing::rt_ray_partial_initialization (origin, direction)
 Initialize a ray from origin and direction only. More...
 
pure subroutine mod_ray_tracing::rt_intersection_apply_transformation (intersection, transformation, ray, has_normal)
 Apply transformation to the intersection and compute the distance. More...
 
pure type(t_intersection) function mod_ray_tracing::rt_intersection_partial_initialization (point, distance)
 Initialize an interface from point and distance only. More...
 
logical pure function, public mod_ray_tracing::rt_does_ray_hit_aligned_axis_bounding_box (ray, corner)
 Test the intersection of a ray and an aligned-axis bounding-box (AABB). More...
 
pure subroutine, public mod_ray_tracing::rt_transform_aligned_axis_bounding_box (corner, transformation)
 Transform an aligned-axis bounding-box (AABB). More...
 
pure subroutine, public mod_ray_tracing::rt_intersection_list_union (list1, list2, is_inside1, is_inside2, union)
 Generate the union of two lists of ray intersections. More...
 
pure subroutine, public mod_ray_tracing::rt_intersection_list_difference (list1, list2, is_inside1, is_inside2, difference)
 Generate the difference of two lists of ray intersections. More...
 

Detailed Description

Function/Subroutine Documentation

◆ rt_does_ray_hit_aligned_axis_bounding_box()

logical pure function, public mod_ray_tracing::rt_does_ray_hit_aligned_axis_bounding_box ( type(t_ray), intent(in)  ray,
double precision, dimension(3,2), intent(in)  corner 
)

Reference:

  • Williams, A., Barrus, S., Morley, R. K., & Shirley, P. (2005). An efficient and robust ray-box intersection algorithm. In ACM SIGGRAPH 2005 Courses (pp. 9-es). doi:[10.1145/1198555.1198748]

The corner(:,1) contains the minimal coordinates and corner(:,2) contains the maximal coordinates.

Parameters
[in]rayRay.
[in]cornerCorners of the AABB.

◆ rt_intersection_apply_transformation()

pure subroutine mod_ray_tracing::rt_intersection_apply_transformation ( class(t_intersection), intent(inout)  intersection,
type(cg_transformation), intent(in)  transformation,
type(t_ray), intent(in)  ray,
logical, intent(in)  has_normal 
)
Parameters
[in,out]intersectionIntersection.
[in]transformationtransformation.
[in]rayray in the original frame.
[in]has_normalApply transformation to the normal.

◆ rt_intersection_list_difference()

pure subroutine, public mod_ray_tracing::rt_intersection_list_difference ( type(t_intersection_list), intent(in)  list1,
type(t_intersection_list), intent(in)  list2,
logical, intent(in)  is_inside1,
logical, intent(in)  is_inside2,
type(t_intersection_list), intent(out)  difference 
)
Parameters
[in]list1,list2Lists of ray intersections.
[in]is_inside1,is_inside2Is the origin of the ray inside or outside?
[out]differenceDifference of list1 and list2.

◆ rt_intersection_list_union()

pure subroutine, public mod_ray_tracing::rt_intersection_list_union ( type(t_intersection_list), intent(in)  list1,
type(t_intersection_list), intent(in)  list2,
logical, intent(in)  is_inside1,
logical, intent(in)  is_inside2,
type(t_intersection_list), intent(out)  union 
)
Parameters
[in]list1,list2Lists of ray intersection.
[in]is_inside1,is_inside2Is the origin of the ray inside or outside?
[out]unionUnion of list1 and list2.

◆ rt_intersection_partial_initialization()

pure type(t_intersection) function mod_ray_tracing::rt_intersection_partial_initialization ( double precision, dimension(3), intent(in)  point,
double precision, intent(in)  distance 
)

The normal vector is set to null vector.

Parameters
[in]pointIntersection point
[in]distanceIntersection distance
Returns
Initialized intersection

◆ rt_ray_partial_initialization()

pure type(t_ray) function mod_ray_tracing::rt_ray_partial_initialization ( double precision, dimension(3), intent(in)  origin,
double precision, dimension(3), intent(in)  direction 
)
Parameters
[in]originOrigin of the ray
[in]directionDirection of the ray
Returns
Initialized ray

◆ rt_transform_aligned_axis_bounding_box()

pure subroutine, public mod_ray_tracing::rt_transform_aligned_axis_bounding_box ( double precision, dimension(3,2), intent(inout)  corner,
type(cg_transformation), intent(in)  transformation 
)
Parameters
[in,out]cornerCorners of the AABB.
[in]transformationTranformation applied to the AABB.