FOSSIL, Axis-Aligned Bounding Box (AABB) class definition.
FOSSIL Axis-Aligned Bounding Box (AABB) class.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(vector_R8P), | public | :: | bmin | Minimum point of AABB. |
|||
| type(vector_R8P), | public | :: | bmax | Maximum point of AABB. |
|||
| integer(kind=I4P), | public | :: | facets_number | = | 0 | Facets number. |
|
| type(facet_object), | public, | allocatable | :: | facet(:) | Facets. |
| procedure, public, pass(self) :: add_facets | Add facets to AABB. |
| 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_inside | Return the true if point is inside ABB. |
| 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. |
| procedure, public, pass(self) :: vertex | Return AABB vertices. |
| generic, public :: assignment(=) => aabb_assign_aabb | Overload |
| procedure, private, pass(lhs) :: aabb_assign_aabb | Operator |
Return closest point on (or in) AABB from point reference.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
||
| 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_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_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_object), | intent(in) | :: | self | AABB box. |
||
| 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_object), | intent(in) | :: | self | AABB box. |
Check result.
Return the true if point is inside ABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
||
| type(vector_R8P), | intent(in) | :: | point | Point reference. |
Check result.
Return ray intersections number.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_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.
Return AABB vertices.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
AABB vertices.
Add facets to AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(inout) | :: | self | AABB. |
||
| type(facet_object), | intent(inout), | allocatable | :: | facet(:) | Facets list. |
Return AABB octants.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(in) | :: | self | AABB. |
||
| type(aabb_object), | intent(out) | :: | octant(8) | AABB octants. |
Destroy AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(inout) | :: | self | AABB. |
Initialize AABB.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_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_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_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_object), | intent(inout) | :: | self | AABB. |
Operator =.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(aabb_object), | intent(inout) | :: | lhs | Left hand side. |
||
| type(aabb_object), | intent(in) | :: | rhs | Right hand side. |
Compute AABB extents (minimum and maximum bounding box) from facets list.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(facet_object), | intent(in) | :: | facet(:) | Facets list. |
||
| type(vector_R8P), | intent(inout) | :: | bmin | Minimum point of AABB. |
||
| type(vector_R8P), | intent(inout) | :: | bmax | Maximum point of AABB. |