VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkRecursiveSphereDirectionEncoder Class Reference

A direction encoder based on the recursive subdivision of an octahedron. More...

#include <vtkRecursiveSphereDirectionEncoder.h>

Inheritance diagram for vtkRecursiveSphereDirectionEncoder:
[legend]
Collaboration diagram for vtkRecursiveSphereDirectionEncoder:
[legend]

Public Types

typedef vtkDirectionEncoder Superclass
- Public Types inherited from vtkDirectionEncoder
typedef vtkObject Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
int GetEncodedDirection (float n[3])
float * GetDecodedGradient (int value)
int GetNumberOfEncodedDirections (void)
float * GetDecodedGradientTable (void)
virtual void SetRecursionDepth (int)
virtual int GetRecursionDepth ()
- Public Member Functions inherited from vtkDirectionEncoder

Static Public Member Functions

static int IsTypeOf (const char *type)
static
vtkRecursiveSphereDirectionEncoder
SafeDownCast (vtkObject *o)
static
vtkRecursiveSphereDirectionEncoder
New ()
- Static Public Member Functions inherited from vtkDirectionEncoder

Protected Member Functions

 vtkRecursiveSphereDirectionEncoder ()
 ~vtkRecursiveSphereDirectionEncoder ()
void InitializeIndexTable (void)
- Protected Member Functions inherited from vtkDirectionEncoder
 vtkDirectionEncoder ()
 ~vtkDirectionEncoder ()
- Protected Member Functions inherited from vtkObject
 vtkObject ()
virtual ~vtkObject ()
virtual void RegisterInternal (vtkObjectBase *, int check)
virtual void UnRegisterInternal (vtkObjectBase *, int check)
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
void InternalReleaseFocus ()
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
virtual ~vtkObjectBase ()
virtual void CollectRevisions (ostream &os)
virtual void ReportReferences (vtkGarbageCollector *)
 vtkObjectBase (const vtkObjectBase &)
void operator= (const vtkObjectBase &)

Protected Attributes

int RecursionDepth
int * IndexTable
float * DecodedNormal
int IndexTableRecursionDepth
int OuterSize
int InnerSize
int GridSize

Detailed Description

A direction encoder based on the recursive subdivision of an octahedron.

vtkRecursiveSphereDirectionEncoder is a direction encoder which uses the vertices of a recursive subdivision of an octahedron (with the vertices pushed out onto the surface of an enclosing sphere) to encode directions into a two byte value.

See Also
vtkDirectionEncoder

Definition at line 33 of file vtkRecursiveSphereDirectionEncoder.h.

Member Typedef Documentation

Definition at line 36 of file vtkRecursiveSphereDirectionEncoder.h.

Constructor & Destructor Documentation

vtkRecursiveSphereDirectionEncoder::vtkRecursiveSphereDirectionEncoder ( )
protected
vtkRecursiveSphereDirectionEncoder::~vtkRecursiveSphereDirectionEncoder ( )
protected

Member Function Documentation

virtual const char* vtkRecursiveSphereDirectionEncoder::GetClassName ( )
virtual

Get the name of this class

Reimplemented from vtkDirectionEncoder.

static int vtkRecursiveSphereDirectionEncoder::IsTypeOf ( const char *  type)
static

Get the name of this class

Reimplemented from vtkDirectionEncoder.

virtual int vtkRecursiveSphereDirectionEncoder::IsA ( const char *  type)
virtual

Get the name of this class

Reimplemented from vtkDirectionEncoder.

static vtkRecursiveSphereDirectionEncoder* vtkRecursiveSphereDirectionEncoder::SafeDownCast ( vtkObject o)
static

Get the name of this class

Reimplemented from vtkDirectionEncoder.

void vtkRecursiveSphereDirectionEncoder::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
virtual

Get the name of this class

Reimplemented from vtkDirectionEncoder.

static vtkRecursiveSphereDirectionEncoder* vtkRecursiveSphereDirectionEncoder::New ( )
static

Construct the object. Initialize the index table which will be used to map the normal into a patch on the recursively subdivided sphere.

Reimplemented from vtkObject.

int vtkRecursiveSphereDirectionEncoder::GetEncodedDirection ( float  n[3])
virtual

Given a normal vector n, return the encoded direction

Implements vtkDirectionEncoder.

float* vtkRecursiveSphereDirectionEncoder::GetDecodedGradient ( int  value)
virtual

/ Given an encoded value, return a pointer to the normal vector

Implements vtkDirectionEncoder.

int vtkRecursiveSphereDirectionEncoder::GetNumberOfEncodedDirections ( void  )
virtual

Return the number of encoded directions

Implements vtkDirectionEncoder.

float* vtkRecursiveSphereDirectionEncoder::GetDecodedGradientTable ( void  )
virtual

Get the decoded gradient table. There are this->GetNumberOfEncodedDirections() entries in the table, each containing a normal (direction) vector. This is a flat structure - 3 times the number of directions floats in an array.

Implements vtkDirectionEncoder.

virtual void vtkRecursiveSphereDirectionEncoder::SetRecursionDepth ( int  )
virtual

Set / Get the recursion depth for the subdivision. This indicates how many time one triangle on the initial 8-sided sphere model is replaced by four triangles formed by connecting triangle edge midpoints. A recursion level of 0 yields 8 triangles with 6 unique vertices. The normals are the vectors from the sphere center through the vertices. The number of directions will be 11 since the four normals with 0 z values will be duplicated in the table - once with +0 values and the other time with -0 values, and an addition index will be used to represent the (0,0,0) normal. If we instead choose a recursion level of 6 (the maximum that can fit within 2 bytes) the number of directions is 16643, with 16386 unique directions and a zero normal.

virtual int vtkRecursiveSphereDirectionEncoder::GetRecursionDepth ( )
virtual

Set / Get the recursion depth for the subdivision. This indicates how many time one triangle on the initial 8-sided sphere model is replaced by four triangles formed by connecting triangle edge midpoints. A recursion level of 0 yields 8 triangles with 6 unique vertices. The normals are the vectors from the sphere center through the vertices. The number of directions will be 11 since the four normals with 0 z values will be duplicated in the table - once with +0 values and the other time with -0 values, and an addition index will be used to represent the (0,0,0) normal. If we instead choose a recursion level of 6 (the maximum that can fit within 2 bytes) the number of directions is 16643, with 16386 unique directions and a zero normal.

void vtkRecursiveSphereDirectionEncoder::InitializeIndexTable ( void  )
protected

Member Data Documentation

int vtkRecursiveSphereDirectionEncoder::RecursionDepth
protected

Definition at line 81 of file vtkRecursiveSphereDirectionEncoder.h.

int* vtkRecursiveSphereDirectionEncoder::IndexTable
protected

Definition at line 86 of file vtkRecursiveSphereDirectionEncoder.h.

float* vtkRecursiveSphereDirectionEncoder::DecodedNormal
protected

Definition at line 92 of file vtkRecursiveSphereDirectionEncoder.h.

int vtkRecursiveSphereDirectionEncoder::IndexTableRecursionDepth
protected

Definition at line 98 of file vtkRecursiveSphereDirectionEncoder.h.

int vtkRecursiveSphereDirectionEncoder::OuterSize
protected

Definition at line 100 of file vtkRecursiveSphereDirectionEncoder.h.

int vtkRecursiveSphereDirectionEncoder::InnerSize
protected

Definition at line 101 of file vtkRecursiveSphereDirectionEncoder.h.

int vtkRecursiveSphereDirectionEncoder::GridSize
protected

Definition at line 102 of file vtkRecursiveSphereDirectionEncoder.h.


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