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... | |
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:
The corner(:,1)
contains the minimal coordinates and corner(:,2)
contains the maximal coordinates.
[in] | ray | Ray. |
[in] | corner | Corners of the AABB. |
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 | ||
) |
[in,out] | intersection | Intersection. |
[in] | transformation | transformation. |
[in] | ray | ray in the original frame. |
[in] | has_normal | Apply transformation to the normal. |
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 | ||
) |
[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 . |
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 | ||
) |
[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 . |
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.
[in] | point | Intersection point |
[in] | distance | Intersection distance |
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 | ||
) |
[in] | origin | Origin of the ray |
[in] | direction | Direction of the ray |
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 | ||
) |
[in,out] | corner | Corners of the AABB. |
[in] | transformation | Tranformation applied to the AABB. |