FOSSIL, Axis-Aligned Bounding Box (AABB) tree-node class definition.
This is just a container for AABB tree's nodes.
FOSSIL Axis-Aligned Bounding Box (AABB) tree-node class.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(aabb_object), | private, | allocatable | :: | aabb | AABB data. |
| procedure, public, pass(self) :: add_facets | Add facets to AABB. |
| procedure, public, pass(self) :: bmin | Return AABB bmin. |
| procedure, public, pass(self) :: bmax | Return AABB bmax. |
| procedure, public, pass(self) :: closest_point | Return closest point on AABB from point reference. |
| procedure, public, pass(self) :: compute_octants | Compute AABB octants. |
| procedure, public, pass(self) :: destroy | Destroy AABB. |
| procedure, public, pass(self) :: distance | Return the (square) distance from point to AABB. |
| procedure, public, pass(self) :: distance_from_facets | Return the (square) distance from point to AABB's facets. |
| procedure, public, pass(self) :: do_ray_intersect | Return true if AABB is intersected by ray. |
| procedure, public, pass(self) :: has_facets | Return true if AABB has facets. |
| procedure, public, pass(self) :: initialize | Initialize AABB. |
| procedure, public, pass(self) :: is_allocated | Return true is node is allocated. |
| procedure, public, pass(self) :: ray_intersections_number | Return ray intersections number. |
| procedure, public, pass(self) :: save_geometry_tecplot_ascii | Save AABB geometry into Tecplot ascii file. |
| procedure, public, pass(self) :: save_facets_into_file_stl | Save facets into file STL. |
| procedure, public, pass(self) :: update_extents | Update AABB bounding box extents. |
| generic, public :: assignment(=) => aabb_node_assign_aabb_node | Overload |
| procedure, private, pass(lhs) :: aabb_node_assign_aabb_node | Operator |
Return AABB bmin.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB box. |
AABB bmin.
Return AABB bmax.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB box. |
AABB bmax.
Return closest point on (or in) AABB from point reference.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB box. |
||
| type(vector_R8P), | intent(in) | :: | point | Point reference. |
Closest point on (on in) aabb to point.
Return the (square) distance from point to AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| type(vector_R8P), | intent(in) | :: | point | Point reference. |
Distance from point to AABB.
Return the (square) distance from point to AABB's facets.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| type(vector_R8P), | intent(in) | :: | point | Point reference. |
Distance from point to AABB's facets.
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.
Return true if AABB has facets.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB box. |
Check result.
Return true if node is allocated.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB box. |
Check result.
Return ray intersections number.
| 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. |
Intersection number.
Add facets to AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(inout) | :: | self | AABB. |
||
| type(facet_object), | intent(inout), | allocatable | :: | facet(:) | Facets list. |
Return AABB octants.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| type(aabb_object), | intent(out) | :: | octant(8) | AABB octants. |
Destroy AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(inout) | :: | self | AABB. |
Initialize AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(inout) | :: | self | AABB. |
||
| type(facet_object), | intent(in), | optional | :: | facet(:) | Facets list. |
|
| type(vector_R8P), | intent(in), | optional | :: | bmin | Minimum point of AABB. |
|
| type(vector_R8P), | intent(in), | optional | :: | bmax | Maximum point of AABB. |
Save AABB geometry into Tecplot ascii file.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| integer(kind=I4P), | intent(in) | :: | file_unit | File unit. |
||
| character(len=*), | intent(in), | optional | :: | aabb_name | Name of AABB. |
Save facets into file STL.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(in) | :: | self | AABB. |
||
| character(len=*), | intent(in) | :: | file_name | File name. |
||
| logical, | intent(in) | :: | is_ascii | Sentinel to check if file is ASCII. |
Update AABB bounding box extents.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(inout) | :: | self | AABB. |
Operator =.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_node_object), | intent(inout) | :: | lhs | Left hand side. |
||
| type(aabb_node_object), | intent(in) | :: | rhs | Right hand side. |