Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]

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 const char * className ()
 Returns the name of the class.
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 compileKdTree (ActorCollection &actors, int max_depth=100, float minimum_volume=0)
 Builds a ActorKdTree with the given list of Actor[s].
void compileKdTree (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:

Constructor & Destructor Documentation

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


Member Function Documentation

virtual const char* vl::ActorKdTree::className (  )  [inline, virtual]

Returns the name of the class.

Reimplemented from vl::ActorTreeAbstract.

int ActorKdTree::childrenCount (  )  const [virtual]

Returns the number of child nodes of an ActorTreeAbstract node.

Implements vl::ActorTreeAbstract.

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

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

Implements vl::ActorTreeAbstract.

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

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

Implements vl::ActorTreeAbstract.

void vl::ActorKdTree::compileKdTree ( 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 .0GHz you can process around 22.000 objects/sec.

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

void ActorKdTree::compileKdTree ( 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.

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

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

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

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

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

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

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

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

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

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

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 a 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()

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.

void vl::ActorKdTree::harvestNonLeafActors ( ActorCollection actors  ) 

Removes the Actor[s] in the internal nodes of the ActorKdTree and appends them in the given ActorCollection.


Member Data Documentation


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

Visualization Library v2010.06 Reference Documentation
Copyright 2005-2009 Michele Bosi. All rights reserved.
Updated on Tue Jun 1 00:57:12 2010.
Permission is granted to use this page to write and publish articles regarding Visualization Library.