Ray-tracing tools
More...
|
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.
|
|
◆ 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] | ray | Ray. |
[in] | corner | Corners 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,list2 | Lists of ray intersections. |
[in] | is_inside1,is_inside2 | Is the origin of the ray inside or outside? |
[out] | difference | Difference 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,list2 | Lists of ray intersection. |
[in] | is_inside1,is_inside2 | Is the origin of the ray inside or outside? |
[out] | union | Union 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] | origin | Origin of the ray |
[in] | direction | Direction 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] | corner | Corners of the AABB. |
[in] | transformation | Tranformation applied to the AABB. |