Visualization Library v1.0.3

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Protected Attributes

vl::ActorKdTree Class Reference

ActorKdTree class extends the ActorTreeAbstract class implementing a space partitioning scheme based on a Kd-Tree. More...

#include <ActorKdTree.hpp>

Inheritance diagram for vl::ActorKdTree:
vl::ActorTreeAbstract vl::Object

List of all members.

Public Member Functions

 ActorKdTree ()
virtual int childrenCount () const
 Returns the number of child nodes of an ActorTreeAbstract node.
virtual ActorTreeAbstractchild (int i)
 Returns the i-th child node of an ActorTreeAbstract node.
virtual const ActorTreeAbstractchild (int i) const
 Returns the i-th child node of an ActorTreeAbstract node.
void buildKdTree (ActorCollection &actors, int max_depth=100, float minimum_volume=0)
 Builds a ActorKdTree with the given list of Actor[s].
void rebuildKdTree (int max_depth=100, float minimum_volume=0)
 Builds a ActorKdTree with the Actor[s] contained in the tree.
const Planeplane () const
 Returns the splitting plane used to divide its two child nodes.
ActorKdTreechildN ()
 Returns the child node that lies in the negative space defined by the splitting plane.
const ActorKdTreechildN () const
 Returns the child node that lies in the negative space defined by the splitting plane.
ActorKdTreechildP ()
 Returns the child node that lies in the positive space defined by the splitting plane.
const ActorKdTreechildP () const
 Returns the child node that lies in the positive space defined by the splitting plane.
ActorKdTreeinsertActor (Actor *actor)
 Inserts an Actor in the ActorKdTree node hierarchy.
ref< ActorKdTreekdtreeFromNonLeafyActors (int max_depth=100, float minimum_volume=0)
 Removes the Actor[s] in the internal nodes of the ActorKdTree and uses them to create a new ActorKdTree.
void harvestNonLeafActors (ActorCollection &actors)
 Removes the Actor[s] in the internal nodes of the ActorKdTree and appends them in the given ActorCollection.

Protected Attributes

Plane mPlane
ref< ActorKdTreemChildN
ref< ActorKdTreemChildP

Detailed Description

ActorKdTree class extends the ActorTreeAbstract class implementing a space partitioning scheme based on a Kd-Tree.

Note:
When building the Kd-Tree, Visualization Library considers the Actors' LOD level 0.
See also:

Definition at line 57 of file ActorKdTree.hpp.


Constructor & Destructor Documentation

vl::ActorKdTree::ActorKdTree (  ) [inline]

Definition at line 62 of file ActorKdTree.hpp.

References VL_DEBUG_SET_OBJECT_NAME.

Referenced by kdtreeFromNonLeafyActors().


Member Function Documentation

int ActorKdTree::childrenCount (  ) const [virtual]

Returns the number of child nodes of an ActorTreeAbstract node.

Implements vl::ActorTreeAbstract.

Definition at line 286 of file ActorKdTree.cpp.

References mChildN, and mChildP.

ActorTreeAbstract * ActorKdTree::child ( int  i ) [virtual]

Returns the i-th child node of an ActorTreeAbstract node.

Implements vl::ActorTreeAbstract.

Definition at line 297 of file ActorKdTree.cpp.

References vl::Log::error(), vl::ref< T >::get(), mChildN, mChildP, and NULL.

const ActorTreeAbstract * ActorKdTree::child ( int  i ) const [virtual]

Returns the i-th child node of an ActorTreeAbstract node.

Implements vl::ActorTreeAbstract.

Definition at line 311 of file ActorKdTree.cpp.

References vl::Log::error(), vl::ref< T >::get(), mChildN, mChildP, and NULL.

void ActorKdTree::buildKdTree ( ActorCollection actors,
int  max_depth = 100,
float  minimum_volume = 0 
)

Builds a ActorKdTree with the given list of Actor[s].

The ActorKdTree generation routine will try to minimize the ActorKdTree depth. Note that this function is relatively quick, but is not for free. Consider that using a Core 2 Duo @2.0GHz you can process around 22.000 objects/sec.

Note:
This method calls prepareActors() before computing the KdTree.

Definition at line 104 of file ActorKdTree.cpp.

References vl::ActorTreeAbstract::prepareActors().

Referenced by vl::Terrain::init(), and rebuildKdTree().

void ActorKdTree::rebuildKdTree ( int  max_depth = 100,
float  minimum_volume = 0 
)

Builds a ActorKdTree with the Actor[s] contained in the tree.

Note:
This method calls prepareActors() before computing the KdTree.

Definition at line 111 of file ActorKdTree.cpp.

References buildKdTree(), and vl::ActorTreeAbstract::extractActors().

const Plane& vl::ActorKdTree::plane (  ) const [inline]

Returns the splitting plane used to divide its two child nodes.

Definition at line 84 of file ActorKdTree.hpp.

ActorKdTree* vl::ActorKdTree::childN (  ) [inline]

Returns the child node that lies in the negative space defined by the splitting plane.

Definition at line 87 of file ActorKdTree.hpp.

Referenced by harvestNonLeafActors(), and insertActor().

const ActorKdTree* vl::ActorKdTree::childN (  ) const [inline]

Returns the child node that lies in the negative space defined by the splitting plane.

Definition at line 89 of file ActorKdTree.hpp.

ActorKdTree* vl::ActorKdTree::childP (  ) [inline]

Returns the child node that lies in the positive space defined by the splitting plane.

Definition at line 92 of file ActorKdTree.hpp.

Referenced by harvestNonLeafActors(), and insertActor().

const ActorKdTree* vl::ActorKdTree::childP (  ) const [inline]

Returns the child node that lies in the positive space defined by the splitting plane.

Definition at line 94 of file ActorKdTree.hpp.

ActorKdTree * ActorKdTree::insertActor ( Actor actor )

Inserts an Actor in the ActorKdTree node hierarchy.

Note that the Actor is likely to be inserted in a node whose bounding volume does not surround the Actor's bounding volume. For this reason after you inserted one or more Actor[s] in the ActorKdTree you should call computeAABB() on the root node of the ActorKdTree. Inserting and removing Actor[s] is an expensive operation and produces an ActorKdTree that is less balanced than the one you would get by recompiling the whole ActorKdTree from scratch.

Returns:
The ActorKdTree node in which the Actor has been inserted.
See also:
ActorTree::eraseActor()

Definition at line 269 of file ActorKdTree.cpp.

References vl::ActorTreeAbstract::actors(), childN(), childP(), vl::Plane::classify(), insertActor(), mPlane, vl::Collection< T >::push_back(), and VL_CHECK.

Referenced by insertActor().

ref< ActorKdTree > ActorKdTree::kdtreeFromNonLeafyActors ( int  max_depth = 100,
float  minimum_volume = 0 
)

Removes the Actor[s] in the internal nodes of the ActorKdTree and uses them to create a new ActorKdTree.

Definition at line 70 of file ActorKdTree.cpp.

References ActorKdTree(), and harvestNonLeafActors().

void ActorKdTree::harvestNonLeafActors ( ActorCollection actors )

Member Data Documentation

Definition at line 149 of file ActorKdTree.hpp.

Referenced by insertActor().

Definition at line 150 of file ActorKdTree.hpp.

Referenced by child(), childrenCount(), and harvestNonLeafActors().

Definition at line 151 of file ActorKdTree.hpp.

Referenced by child(), childrenCount(), and harvestNonLeafActors().


The documentation for this class was generated from the following files:

Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:08.
Permission is granted to use this page to write and publish articles regarding Visualization Library.