Fluxus::PolyPrimitive Class Reference

#include <PolyPrimitive.h>

Inheritance diagram for Fluxus::PolyPrimitive:

Inheritance graph
[legend]
Collaboration diagram for Fluxus::PolyPrimitive:

Collaboration graph
[legend]

Public Types

enum  Type {
  TRISTRIP, QUADS, TRILIST, TRIFAN,
  POLYGON
}

Public Member Functions

 PolyPrimitive (Type t=TRISTRIP)
 PolyPrimitive (const PolyPrimitive &other)
virtual ~PolyPrimitive ()
Type GetType ()
virtual void AddVertex (const dVertex &Vert)
 Add a new vertex to the primitive.
void Clear ()
 Clears out the primitive.
Primitive Interface
virtual PolyPrimitiveClone () const
virtual void Render ()
virtual dBoundingBox GetBoundingBox ()
virtual void RecalculateNormals (bool smooth)
 Only makes sense for certain primitive types.
virtual void ApplyTransform (bool ScaleRotOnly=false)
virtual string GetTypeName ()
 This needs to be set appropriately for all derived types.
Topology functions
Functions to get topological information about the primitive. These are lazily computed and stored as they can take some time.

const vector< vector< int > > & GetConnectedVerts ()
const vector< vector< pair<
int, int > > > & 
GetUniqueEdges ()
const vector< dVector > & GetGeometricNormals ()
Indexed mode access
void SetIndexMode (bool s)
bool IsIndexed ()
vector< unsigned int > & GetIndex ()
void ConvertToIndexed ()

Protected Member Functions

virtual void PDataDirty ()
 Called when a named pdata mapping changes.
void GenerateTopology ()
void CalculateConnected ()
void CalculateGeometricNormals ()
void CalculateUniqueEdges ()
void UniqueEdgesFindShared (pair< int, int > edge, set< pair< int, int > > firstpass, set< pair< int, int > > &stored)
void RecalculateNormalsIndexed ()

Protected Attributes

vector< vector< int > > m_ConnectedVerts
vector< dVectorm_GeometricNormals
vector< vector< pair< int,
int > > > 
m_UniqueEdges
bool m_IndexMode
vector< unsigned int > m_IndexData
Type m_Type
vector< dVector > * m_VertData
vector< dVector > * m_NormData
vector< dColour > * m_ColData
vector< dVector > * m_TexData

Detailed Description

A Polygon primitive

Definition at line 29 of file PolyPrimitive.h.


Member Enumeration Documentation

enum Fluxus::PolyPrimitive::Type

Enumerator:
TRISTRIP 
QUADS 
TRILIST 
TRIFAN 
POLYGON 

Definition at line 32 of file PolyPrimitive.h.


Constructor & Destructor Documentation

PolyPrimitive::PolyPrimitive ( Type  t = TRISTRIP  ) 

Definition at line 26 of file PolyPrimitive.cpp.

PolyPrimitive::PolyPrimitive ( const PolyPrimitive other  ) 

Definition at line 39 of file PolyPrimitive.cpp.

PolyPrimitive::~PolyPrimitive (  )  [virtual]

Definition at line 48 of file PolyPrimitive.cpp.


Member Function Documentation

PolyPrimitive * PolyPrimitive::Clone (  )  const [virtual]

Implements Fluxus::Primitive.

Reimplemented in Fluxus::TextPrimitive.

Definition at line 52 of file PolyPrimitive.cpp.

void PolyPrimitive::Render (  )  [virtual]

Implements Fluxus::Primitive.

Reimplemented in Fluxus::TextPrimitive.

Definition at line 86 of file PolyPrimitive.cpp.

dBoundingBox PolyPrimitive::GetBoundingBox (  )  [virtual]

Implements Fluxus::Primitive.

Definition at line 520 of file PolyPrimitive.cpp.

void PolyPrimitive::RecalculateNormals ( bool  smooth  )  [virtual]

Only makes sense for certain primitive types.

Reimplemented from Fluxus::Primitive.

Definition at line 202 of file PolyPrimitive.cpp.

void PolyPrimitive::ApplyTransform ( bool  ScaleRotOnly = false  )  [virtual]

Implements Fluxus::Primitive.

Definition at line 530 of file PolyPrimitive.cpp.

virtual string Fluxus::PolyPrimitive::GetTypeName (  )  [inline, virtual]

This needs to be set appropriately for all derived types.

Reimplemented from Fluxus::Primitive.

Reimplemented in Fluxus::TextPrimitive.

Definition at line 46 of file PolyPrimitive.h.

Type Fluxus::PolyPrimitive::GetType (  )  [inline]

Definition at line 49 of file PolyPrimitive.h.

void PolyPrimitive::AddVertex ( const dVertex Vert  )  [virtual]

Add a new vertex to the primitive.

Definition at line 74 of file PolyPrimitive.cpp.

void PolyPrimitive::Clear (  ) 

Clears out the primitive.

Reimplemented from Fluxus::PDataContainer.

Definition at line 57 of file PolyPrimitive.cpp.

const vector<vector<int> >& Fluxus::PolyPrimitive::GetConnectedVerts (  )  [inline]

Connected verts is a list of lists of vertices which are coincident. If this polyprimitive is indexed the coincident verts are calculated by looking at the index values and the position of the index is stored, otherwise it's done by looking at the actual vertex positions, with a small allowed error, and the index is stored.

Definition at line 71 of file PolyPrimitive.h.

const vector<vector<pair<int,int> > >& Fluxus::PolyPrimitive::GetUniqueEdges (  )  [inline]

Unique edges is a list of coincident edges in the topology, formed by pairs of vert indexes, or index positions if the poly is indexed.

Definition at line 76 of file PolyPrimitive.h.

const vector<dVector>& Fluxus::PolyPrimitive::GetGeometricNormals (  )  [inline]

In indexed mode there is a geometric normal for every index

Definition at line 80 of file PolyPrimitive.h.

void Fluxus::PolyPrimitive::SetIndexMode ( bool  s  )  [inline]

Definition at line 86 of file PolyPrimitive.h.

bool Fluxus::PolyPrimitive::IsIndexed (  )  [inline]

Definition at line 87 of file PolyPrimitive.h.

vector<unsigned int>& Fluxus::PolyPrimitive::GetIndex (  )  [inline]

Definition at line 88 of file PolyPrimitive.h.

void PolyPrimitive::ConvertToIndexed (  ) 

Look at coincident verts and compress the poly primitive into an indexed form

Definition at line 262 of file PolyPrimitive.cpp.

void PolyPrimitive::PDataDirty (  )  [protected, virtual]

Called when a named pdata mapping changes.

Implements Fluxus::PDataContainer.

Definition at line 65 of file PolyPrimitive.cpp.

void PolyPrimitive::GenerateTopology (  )  [protected]

Definition at line 315 of file PolyPrimitive.cpp.

void PolyPrimitive::CalculateConnected (  )  [protected]

Definition at line 328 of file PolyPrimitive.cpp.

void PolyPrimitive::CalculateGeometricNormals (  )  [protected]

Definition at line 366 of file PolyPrimitive.cpp.

void PolyPrimitive::CalculateUniqueEdges (  )  [protected]

Definition at line 431 of file PolyPrimitive.cpp.

void PolyPrimitive::UniqueEdgesFindShared ( pair< int, int >  edge,
set< pair< int, int > >  firstpass,
set< pair< int, int > > &  stored 
) [protected]

Definition at line 473 of file PolyPrimitive.cpp.

void Fluxus::PolyPrimitive::RecalculateNormalsIndexed (  )  [protected]


Field Documentation

vector<vector<int> > Fluxus::PolyPrimitive::m_ConnectedVerts [protected]

Definition at line 107 of file PolyPrimitive.h.

vector<dVector> Fluxus::PolyPrimitive::m_GeometricNormals [protected]

Definition at line 108 of file PolyPrimitive.h.

vector<vector<pair<int,int> > > Fluxus::PolyPrimitive::m_UniqueEdges [protected]

Definition at line 109 of file PolyPrimitive.h.

bool Fluxus::PolyPrimitive::m_IndexMode [protected]

Definition at line 111 of file PolyPrimitive.h.

vector<unsigned int> Fluxus::PolyPrimitive::m_IndexData [protected]

Definition at line 112 of file PolyPrimitive.h.

Type Fluxus::PolyPrimitive::m_Type [protected]

Definition at line 114 of file PolyPrimitive.h.

vector<dVector>* Fluxus::PolyPrimitive::m_VertData [protected]

Definition at line 115 of file PolyPrimitive.h.

vector<dVector>* Fluxus::PolyPrimitive::m_NormData [protected]

Definition at line 116 of file PolyPrimitive.h.

vector<dColour>* Fluxus::PolyPrimitive::m_ColData [protected]

Definition at line 117 of file PolyPrimitive.h.

vector<dVector>* Fluxus::PolyPrimitive::m_TexData [protected]

Definition at line 118 of file PolyPrimitive.h.


The documentation for this class was generated from the following files:
Generated on Mon Feb 11 06:54:50 2008 for The Fluxus Renderer (libfluxus) by  doxygen 1.5.1