version 0.6.0
Loading...
Searching...
No Matches

Ray-tracing tools More...

Data Types

type  mod_ray_tracing::t_ray
 Definition of a ray. More...
 
type  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.
 
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).
 
pure subroutine, public mod_ray_tracing::rt_transform_aligned_axis_bounding_box (corner, transformation)
 Transform an aligned-axis bounding-box (AABB).
 
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.
 
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.
 

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_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_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(t_cg_transformation), intent(in) transformation )
Parameters
[in,out]cornerCorners of the AABB.
[in]transformationTranformation applied to the AABB.