Neko 0.9.99
A portable framework for high-order spectral element flow simulations
|
Axis Aligned Bounding Box (aabb) Tree. More...
Public Member Functions | |
procedure, pass, public | init (this, initial_capacity) |
Initializes the AABB tree. | |
procedure, pass, public | build (this, objects) |
Builds the tree. | |
procedure, pass, public | insert_object (this, object, object_index) |
Inserts an object into the tree. | |
procedure, pass, public | get_size (this) |
Returns the size of the tree, in number of leaves. | |
procedure, pass, public | get_root_index (this) |
Returns the index of the root node. | |
procedure, pass, public | get_parent_index (this, node_index) |
Returns the index of the parent node of the node at the given index. | |
procedure, pass, public | get_left_index (this, node_index) |
Returns the index of the left node of the node at the given index. | |
procedure, pass, public | get_right_index (this, node_index) |
Returns the index of the right node of the node at the given index. | |
procedure, pass, public | get_node (this, node_index) |
Returns the node at the given index. | |
procedure, pass, public | get_root_node (this) |
Returns the root node of the tree. | |
procedure, pass, public | get_parent_node (this, node_index) |
Returns the parent node of the node at the given index. | |
procedure, pass, public | get_left_node (this, node_index) |
Returns the left node of the node at the given index. | |
procedure, pass, public | get_right_node (this, node_index) |
Returns the right node of the node at the given index. | |
procedure, pass, public | get_aabb (this, node_index) |
procedure, pass, public | query_overlaps (this, object, object_index, overlaps) |
Queries the tree for overlapping objects. | |
procedure, pass, public | print (this) |
Prints the tree. | |
procedure, pass(this) | allocate_node (this) |
Allocates a new node in the tree. | |
procedure, pass(this) | deallocate_node (this, node_index) |
Deallocates a node in the tree. | |
procedure, pass(this) | resize_node_pool (this, new_capacity) |
Resizes the node pool. | |
procedure, pass(this) | insert_leaf (this, leaf_node_index) |
Inserts a leaf into the tree. | |
procedure, pass(this) | fix_upwards_tree (this, tree_start_index) |
Fixes the tree upwards. | |
procedure, pass(this) | valid_tree (this) |
Validates the tree. | |
Public Attributes | |
integer | root_node_index = AABB_NULL_NODE |
integer | allocated_node_count = 0 |
integer | next_free_node_index = AABB_NULL_NODE |
integer | node_capacity = 0 |
integer | growth_size = 1 |
Private Attributes | |
type(aabb_node_t), dimension(:), allocatable | nodes |
Definition at line 129 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::allocate_node | ( | class(aabb_tree_t), intent(inout) | this | ) |
Definition at line 178 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::build | ( | class(aabb_tree_t), intent(inout) | this, |
class(*), dimension(:), intent(in) | objects | ||
) |
Definition at line 142 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::deallocate_node | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 179 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::fix_upwards_tree | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | tree_start_index | ||
) |
This method is used to fix the tree upwards after an insertion. It is used to expand the nodes of the tree to fit the new leaf node.
Definition at line 183 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_aabb | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 168 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_left_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 153 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_left_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 163 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 158 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_parent_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 151 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_parent_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 161 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_right_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 155 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_right_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 165 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_root_index | ( | class(aabb_tree_t), intent(in) | this | ) |
Definition at line 149 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_root_node | ( | class(aabb_tree_t), intent(in) | this | ) |
Definition at line 159 of file aabb_tree.f90.
Definition at line 147 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::init | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | initial_capacity | ||
) |
Definition at line 141 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::insert_leaf | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | leaf_node_index | ||
) |
Definition at line 181 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::insert_object | ( | class(aabb_tree_t), intent(inout) | this, |
class(*), intent(in) | object, | ||
integer, intent(in) | object_index | ||
) |
Definition at line 143 of file aabb_tree.f90.
Definition at line 173 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::query_overlaps | ( | class(aabb_tree_t), intent(in) | this, |
class(*), intent(in) | object, | ||
integer, intent(in) | object_index, | ||
integer, dimension(:), intent(out) | overlaps | ||
) |
Definition at line 170 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::resize_node_pool | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | new_capacity | ||
) |
Definition at line 180 of file aabb_tree.f90.
Definition at line 185 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::allocated_node_count = 0 |
Definition at line 133 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::growth_size = 1 |
Definition at line 136 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::next_free_node_index = AABB_NULL_NODE |
Definition at line 134 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::node_capacity = 0 |
Definition at line 135 of file aabb_tree.f90.
|
private |
Definition at line 131 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::root_node_index = AABB_NULL_NODE |
Definition at line 132 of file aabb_tree.f90.