OpenWalnut 1.2.5
Public Types | Public Member Functions | Static Public Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes | Friends
WTriangleMesh Class Reference

Triangle mesh data structure allowing for convenient access of the elements. More...

#include <WTriangleMesh.h>

Inheritance diagram for WTriangleMesh:

List of all members.

Public Types

typedef boost::shared_ptr
< WTriangleMesh
SPtr
 Shared pointer.
typedef boost::shared_ptr
< const WTriangleMesh
ConstSPtr
 Const shared pointer.

Public Member Functions

 WTriangleMesh (size_t vertNum, size_t triangleNum)
 constructor that already reserves space for a given number of triangles and vertexes
 WTriangleMesh (osg::ref_ptr< osg::Vec3Array > vertices, const std::vector< size_t > &triangles)
 Constructs a new mesh out of the given vertices and triangles.
virtual ~WTriangleMesh ()
 destructor
virtual const std::string getName () const
 Gets the name of this prototype.
virtual const std::string getDescription () const
 Gets the description for this prototype.
void addVertex (osg::Vec3 vert)
 adds a vertex position to the mesh
void addVertex (float x, float y, float z)
 adds a vertex position to the mesh
void addVertex (WPosition vert)
 adds a vertex position to the mesh
void addTextureCoordinate (osg::Vec3 texCoord)
 Adds a texture coordinate for the vertex.
void addTextureCoordinate (float x, float y, float z)
 Adds a texture coordinate for the vertex.
void addTriangle (size_t vert0, size_t vert1, size_t vert2)
 adds a tringle to the mesh
void addTriangle (osg::Vec3 vert0, osg::Vec3 vert1, osg::Vec3 vert2)
 adds a tringle and its 3 vertexes to the mesh
void setVertex (size_t index, osg::Vec3 vert)
 sets a vertex to a new position
void setVertexNormal (size_t index, osg::Vec3 normal)
 sets the normal for a given vertex
void setVertexNormal (size_t index, WPosition normal)
 sets the normal for a given vertex
void setVertexColor (size_t index, osg::Vec4 color)
 sets the color for a given vertex
void setTriangleColor (size_t index, osg::Vec4 color)
 sets the color for a given triangle
osg::ref_ptr< osg::Vec4Array > getTriangleColors () const
 Return triangle colors.
osg::ref_ptr< osg::Vec3Array > getVertexArray ()
 getter
osg::ref_ptr< const
osg::Vec3Array > 
getVertexArray () const
 Returns a const reference pointer to the vertex array.
osg::ref_ptr< osg::Vec3Array > getTextureCoordinateArray ()
 Returns a reference pointer to the texture coordinate array.
osg::ref_ptr< const
osg::Vec3Array > 
getTextureCoordinateArray () const
 Returns a const reference pointer to the texture coordinate array.
osg::ref_ptr< osg::Vec3Array > getVertexNormalArray (bool forceRecalc=false)
 getter
osg::ref_ptr< osg::Vec4Array > getVertexColorArray ()
 getter
const std::vector< size_t > & getTriangles () const
 Returns a const reference to the vertex ids of the triangles.
osg::ref_ptr< osg::Vec3Array > getTriangleNormalArray (bool forceRecalc=false)
 getter
osg::Vec3 getVertex (size_t index) const
 getter
osg::Vec4 getVertColor (size_t index) const
 getter
osg::Vec3 getTriVert (size_t triId, size_t vertNum)
 getter
WVector3d getNormal (size_t index) const
 getter
size_t vertSize () const
 getter
size_t triangleSize () const
 getter
void doLoopSubD ()
 performs a loop subdivision on the triangle mesh
size_t getTriVertId0 (size_t triId) const
 returns the id of the first vertex of a triangle
size_t getTriVertId1 (size_t triId) const
 returns the id of the second vertex of a triangle
size_t getTriVertId2 (size_t triId) const
 return the id of the third vertex of a triangle
void addMesh (boost::shared_ptr< WTriangleMesh > mesh, float xOff=0., float yOff=0., float zOff=0.)
 adds a mesh to the existing, no check for duplicate vertexes is performed, an additional vector may be specified to move the mesh to add
void translateMesh (float xOff, float yOff, float zOff)
 moves the entire mesh to a new postion
void zoomMesh (float zoom)
 multiplies the vertex vectors of the mesh with a given number
bool operator== (const WTriangleMesh &rhs) const
 Checks if two meshes are exactly the same.

Static Public Member Functions

static boost::shared_ptr
< WPrototyped
getPrototype ()
 Returns a prototype instantiated with the true type of the deriving class.

Static Protected Attributes

static boost::shared_ptr
< WPrototyped
m_prototype = boost::shared_ptr< WPrototyped >()
 The prototype as singleton.

Private Member Functions

 WTriangleMesh ()
 we don't allow the standard constructor
void removeVertex (size_t index)
 removes a vertex from the vertex array, if any triangles still index that vertex they will be removed if forceRemoveTriangle is true
void removeTriangle (size_t index)
 removes a triangle from the mesh
void recalcVertNormals ()
 recalculates the vertex normals
osg::Vec3 calcTriangleNormal (size_t triangle)
 calculates a normal from the 3 points in space defining a triangle
osg::Vec3 calcNormal (osg::Vec3 vert0, osg::Vec3 vert1, osg::Vec3 vert2)
 calculates a normal from the 3 points in space
void updateVertsInTriangles ()
 updates the list for which vertexes appear in which triangle
void calcNeighbors ()
 calculates neighbor information for triangles
size_t getNeighbor (const size_t coVert1, const size_t coVert2, const size_t triangleNum)
 returns the triangle index of a triangle neighboring a given edge of a vertex
void setTriVert0 (size_t triId, size_t vertId)
 higher level access function to the triangle vector, sets the first vertex of a triangle to a given vertex id
void setTriVert1 (size_t triId, size_t vertId)
 higher level access function to the triangle vector, sets the second vertex of a triangle to a given vertex id
void setTriVert2 (size_t triId, size_t vertId)
 higher level access function to the triangle vector, sets the third vertex of a triangle to a given vertex id
void loopSetTriangle (size_t triId, size_t vertId1, size_t vertId2, size_t vertId3)
 changes the vertex ids of a triangle
void loopEraseTriangleFromVertex (size_t triId, size_t vertId)
 erases a triangle from the vertexe's list of triangles it is part of
osg::Vec3 loopCalcNewPosition (size_t vertId)
 calculates the new position of a vertex depending on it's location in the grid and number of neighbors
void loopInsertCenterTriangle (size_t triId)
 inserts the center triangle in a given triangle,
void loopInsertCornerTriangles (size_t triId)
 inserts the 3 corner triangles in a given triangle
size_t loopCalcEdgeVert (size_t triId, size_t edgeV1, size_t edgeV2, size_t V3)
 calculates the vertex id for a given edge, inserts a new vertex of none exists yet
double loopGetAlpha (int n)
 loop helper function
size_t loopGetNextVertex (size_t triNum, size_t vertNum)
 returns the id of the next vertex int he triangle
size_t loopGetThirdVert (size_t coVert1, size_t coVert2, size_t triangleNum)
 returns the id of the third vertex of a triangle for two given vertexes

Private Attributes

size_t m_countVerts
 number of vertexes in the mesh
size_t m_countTriangles
 number of triangles in the mesh
bool m_meshDirty
 flag indicating a change took place which requires a recalculation of components
bool m_neighborsCalculated
 flag indicating whether the neighbor information has been calculated yet
osg::ref_ptr< osg::Vec3Array > m_verts
 array containing the vertices
osg::ref_ptr< osg::Vec3Array > m_textureCoordinates
 array containing the texture coordinates
osg::ref_ptr< osg::Vec3Array > m_vertNormals
 array containing the vertex normals
osg::ref_ptr< osg::Vec4Array > m_vertColors
 array containing vertex colors
std::vector< size_t > m_triangles
 array containing the triangles
osg::ref_ptr< osg::Vec3Array > m_triangleNormals
 array containing the triangle normals
osg::ref_ptr< osg::Vec4Array > m_triangleColors
 array containing the triangle colors
std::vector< std::vector
< size_t > > 
m_vertexIsInTriangle
 for each vertex, list of triangles it is part of
std::vector< std::vector
< size_t > > 
m_triangleNeighbors
 edge neighbors for each triangle
size_t m_numTriVerts
 stores the number of vertexes before the loop subdivion is run, needed by the loop algorithm
size_t m_numTriFaces
 stores the number of triangles before the loop subdivion is run, needed by the loop algorithm

Friends

class WTriangleMeshTest

Detailed Description

Triangle mesh data structure allowing for convenient access of the elements.

Definition at line 43 of file WTriangleMesh.h.


Member Typedef Documentation

typedef boost::shared_ptr< const WTriangleMesh > WTriangleMesh::ConstSPtr

Const shared pointer.

Definition at line 56 of file WTriangleMesh.h.

typedef boost::shared_ptr< WTriangleMesh > WTriangleMesh::SPtr

Shared pointer.

Definition at line 51 of file WTriangleMesh.h.


Constructor & Destructor Documentation

WTriangleMesh::WTriangleMesh ( size_t  vertNum,
size_t  triangleNum 
)

constructor that already reserves space for a given number of triangles and vertexes

Parameters:
vertNum
triangleNum

Definition at line 52 of file WTriangleMesh.cpp.

References m_textureCoordinates, m_triangleColors, m_triangleNormals, m_triangles, m_vertColors, m_vertNormals, and m_verts.

WTriangleMesh::WTriangleMesh ( osg::ref_ptr< osg::Vec3Array >  vertices,
const std::vector< size_t > &  triangles 
)

Constructs a new mesh out of the given vertices and triangles.

Parameters:
verticesVec3Array storing all vertices
trianglesVector of consecutive vertex indices where each 3 IDs are a triangle starting at 0,1,2 for first triangle 3,4,5 for the second

Definition at line 68 of file WTriangleMesh.cpp.

WTriangleMesh::~WTriangleMesh ( ) [virtual]

destructor

Definition at line 84 of file WTriangleMesh.cpp.

WTriangleMesh::WTriangleMesh ( ) [private]

we don't allow the standard constructor

Referenced by getPrototype().


Member Function Documentation

void WTriangleMesh::addMesh ( boost::shared_ptr< WTriangleMesh mesh,
float  xOff = 0.,
float  yOff = 0.,
float  zOff = 0. 
)

adds a mesh to the existing, no check for duplicate vertexes is performed, an additional vector may be specified to move the mesh to add

Parameters:
mesh
xOff
yOff
zOff

Definition at line 576 of file WTriangleMesh.cpp.

References addTriangle(), addVertex(), m_countVerts, m_meshDirty, and setVertexColor().

void WTriangleMesh::addTextureCoordinate ( osg::Vec3  texCoord) [inline]

Adds a texture coordinate for the vertex.

Parameters:
texCoordthe texture coordinate

Definition at line 620 of file WTriangleMesh.h.

References m_countVerts.

Referenced by addTextureCoordinate().

void WTriangleMesh::addTextureCoordinate ( float  x,
float  y,
float  z 
) [inline]

Adds a texture coordinate for the vertex.

Parameters:
xtexture coordinate X
ytexture coordinate Y
ztexture coordinate Z

Definition at line 625 of file WTriangleMesh.h.

References addTextureCoordinate().

void WTriangleMesh::addTriangle ( size_t  vert0,
size_t  vert1,
size_t  vert2 
)

adds a tringle to the mesh

Parameters:
vert0index of the first vertex
vert1index of the second vertex
vert2index of the third vertex

Definition at line 98 of file WTriangleMesh.cpp.

References m_countTriangles, and m_triangles.

Referenced by addMesh(), addTriangle(), loopInsertCenterTriangle(), loopInsertCornerTriangles(), WTriangleMeshTest::testComponentDecomposition(), and WTriangleMeshTest::testEqualityOperator().

void WTriangleMesh::addTriangle ( osg::Vec3  vert0,
osg::Vec3  vert1,
osg::Vec3  vert2 
)

adds a tringle and its 3 vertexes to the mesh

Parameters:
vert0position of the first vertex
vert1position of the second vertex
vert2position of the third vertex

Definition at line 110 of file WTriangleMesh.cpp.

References addTriangle(), addVertex(), and m_countVerts.

void WTriangleMesh::addVertex ( float  x,
float  y,
float  z 
)

adds a vertex position to the mesh

Parameters:
x
y
z

Definition at line 88 of file WTriangleMesh.cpp.

References addVertex().

void WTriangleMesh::addVertex ( osg::Vec3  vert) [inline]

adds a vertex position to the mesh

Parameters:
vert

Definition at line 630 of file WTriangleMesh.h.

References m_countVerts.

Referenced by addMesh(), addTriangle(), addVertex(), loopCalcEdgeVert(), WTriangleMeshTest::testComponentDecomposition(), and WTriangleMeshTest::testEqualityOperator().

void WTriangleMesh::addVertex ( WPosition  vert)

adds a vertex position to the mesh

Parameters:
vert

Definition at line 93 of file WTriangleMesh.cpp.

References addVertex().

void WTriangleMesh::calcNeighbors ( ) [private]

calculates neighbor information for triangles

Definition at line 319 of file WTriangleMesh.cpp.

References getNeighbor(), getTriVertId0(), getTriVertId1(), getTriVertId2(), m_countTriangles, m_neighborsCalculated, and m_triangleNeighbors.

osg::Vec3 WTriangleMesh::calcNormal ( osg::Vec3  vert0,
osg::Vec3  vert1,
osg::Vec3  vert2 
) [private]

calculates a normal from the 3 points in space

Parameters:
vert0vertex 1
vert1vertex 2
vert2vertex 3
Returns:
the normal of the plane defined by these three points

Definition at line 293 of file WTriangleMesh.cpp.

osg::Vec3 WTriangleMesh::calcTriangleNormal ( size_t  triangle) [private]

calculates a normal from the 3 points in space defining a triangle

Parameters:
triangle
Returns:
the normal of the triangle

Definition at line 277 of file WTriangleMesh.cpp.

References getTriVert().

Referenced by recalcVertNormals().

void WTriangleMesh::doLoopSubD ( )
const std::string WTriangleMesh::getDescription ( ) const [inline, virtual]

Gets the description for this prototype.

Returns:
the description

Implements WPrototyped.

Definition at line 650 of file WTriangleMesh.h.

const std::string WTriangleMesh::getName ( ) const [inline, virtual]

Gets the name of this prototype.

Returns:
the name.

Implements WPrototyped.

Definition at line 645 of file WTriangleMesh.h.

size_t WTriangleMesh::getNeighbor ( const size_t  coVert1,
const size_t  coVert2,
const size_t  triangleNum 
) [private]

returns the triangle index of a triangle neighboring a given edge of a vertex

Parameters:
coVert1
coVert2
triangleNum
Returns:
the number of the neighboring triangle.

Definition at line 337 of file WTriangleMesh.cpp.

References m_vertexIsInTriangle.

Referenced by calcNeighbors(), and loopCalcEdgeVert().

WVector3d WTriangleMesh::getNormal ( size_t  index) const

getter

Parameters:
index
Returns:
normal

Definition at line 203 of file WTriangleMesh.cpp.

References m_countVerts, and m_vertNormals.

boost::shared_ptr< WPrototyped > WTriangleMesh::getPrototype ( ) [static]

Returns a prototype instantiated with the true type of the deriving class.

Returns:
the prototype.

Definition at line 40 of file WTriangleMesh.cpp.

References m_prototype, and WTriangleMesh().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::getTextureCoordinateArray ( )

Returns a reference pointer to the texture coordinate array.

Returns:
texture coordinate array

Definition at line 152 of file WTriangleMesh.cpp.

References m_textureCoordinates.

osg::ref_ptr< const osg::Vec3Array > WTriangleMesh::getTextureCoordinateArray ( ) const

Returns a const reference pointer to the texture coordinate array.

Returns:
texture coordinate array

Definition at line 157 of file WTriangleMesh.cpp.

References m_textureCoordinates.

osg::ref_ptr< osg::Vec4Array > WTriangleMesh::getTriangleColors ( ) const

Return triangle colors.

Returns:
OSG Vec4 Array of triangle colors

Definition at line 719 of file WTriangleMesh.cpp.

References m_triangleColors.

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::getTriangleNormalArray ( bool  forceRecalc = false)

getter

Parameters:
forceRecalc
Returns:
pointer to the triangle normal array

Definition at line 171 of file WTriangleMesh.cpp.

References m_meshDirty, m_triangleNormals, and recalcVertNormals().

const std::vector< size_t > & WTriangleMesh::getTriangles ( ) const

Returns a const reference to the vertex ids of the triangles.

Returns:
The triangle vertex id list

Definition at line 186 of file WTriangleMesh.cpp.

References m_triangles.

Referenced by tm_utils::componentDecomposition(), and tm_utils::operator<<().

osg::Vec3 WTriangleMesh::getTriVert ( size_t  triId,
size_t  vertNum 
) [inline]

getter

Parameters:
triId
vertNum
Returns:
vertex

Definition at line 676 of file WTriangleMesh.h.

References m_countTriangles, m_triangles, and m_verts.

Referenced by calcTriangleNormal().

size_t WTriangleMesh::getTriVertId0 ( size_t  triId) const [inline]

returns the id of the first vertex of a triangle

Parameters:
triIdid of the triangle
Returns:
id of the vertex

Definition at line 682 of file WTriangleMesh.h.

References m_countTriangles, and m_triangles.

Referenced by calcNeighbors(), loopCalcEdgeVert(), loopGetNextVertex(), loopGetThirdVert(), loopInsertCenterTriangle(), loopInsertCornerTriangles(), and updateVertsInTriangles().

size_t WTriangleMesh::getTriVertId1 ( size_t  triId) const [inline]

returns the id of the second vertex of a triangle

Parameters:
triIdid of the triangle
Returns:
id of the vertex

Definition at line 688 of file WTriangleMesh.h.

References m_countTriangles, and m_triangles.

Referenced by calcNeighbors(), loopCalcEdgeVert(), loopGetNextVertex(), loopGetThirdVert(), loopInsertCenterTriangle(), loopInsertCornerTriangles(), loopSetTriangle(), and updateVertsInTriangles().

size_t WTriangleMesh::getTriVertId2 ( size_t  triId) const [inline]

return the id of the third vertex of a triangle

Parameters:
triIdid of the triangle
Returns:
id of the vertex

Definition at line 694 of file WTriangleMesh.h.

References m_countTriangles, and m_triangles.

Referenced by calcNeighbors(), loopCalcEdgeVert(), loopGetNextVertex(), loopGetThirdVert(), loopInsertCenterTriangle(), loopInsertCornerTriangles(), loopSetTriangle(), and updateVertsInTriangles().

osg::Vec4 WTriangleMesh::getVertColor ( size_t  index) const

getter

Parameters:
index
Returns:
color

Definition at line 197 of file WTriangleMesh.cpp.

References m_countVerts, and m_vertColors.

osg::Vec3 WTriangleMesh::getVertex ( size_t  index) const

getter

Parameters:
index
Returns:
vertex

Definition at line 191 of file WTriangleMesh.cpp.

References m_countVerts, and m_verts.

Referenced by loopCalcNewPosition().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::getVertexArray ( )

getter

Returns:
pointer to the vertex array

Definition at line 142 of file WTriangleMesh.cpp.

References m_verts.

Referenced by tm_utils::componentDecomposition(), and tm_utils::operator<<().

osg::ref_ptr< const osg::Vec3Array > WTriangleMesh::getVertexArray ( ) const

Returns a const reference pointer to the vertex array.

Returns:
vertex array

Definition at line 147 of file WTriangleMesh.cpp.

References m_verts.

osg::ref_ptr< osg::Vec4Array > WTriangleMesh::getVertexColorArray ( )

getter

Returns:
pointer to the vertex color array

Definition at line 181 of file WTriangleMesh.cpp.

References m_vertColors.

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::getVertexNormalArray ( bool  forceRecalc = false)

getter

Parameters:
forceRecalc
Returns:
pointer to the vertex normal array

Definition at line 162 of file WTriangleMesh.cpp.

References m_meshDirty, m_vertNormals, and recalcVertNormals().

size_t WTriangleMesh::loopCalcEdgeVert ( size_t  triId,
size_t  edgeV1,
size_t  edgeV2,
size_t  V3 
) [private]

calculates the vertex id for a given edge, inserts a new vertex of none exists yet

Parameters:
triIdthe triangle id
edgeV1
edgeV2
V3
Returns:
index of the vertex

Definition at line 440 of file WTriangleMesh.cpp.

References addVertex(), getNeighbor(), getTriVertId0(), getTriVertId1(), getTriVertId2(), loopGetThirdVert(), m_countVerts, and m_numTriFaces.

Referenced by loopInsertCenterTriangle().

osg::Vec3 WTriangleMesh::loopCalcNewPosition ( size_t  vertId) [private]

calculates the new position of a vertex depending on it's location in the grid and number of neighbors

Parameters:
vertIdthe vertex id
Returns:
new position in 3D space

Definition at line 404 of file WTriangleMesh.cpp.

References getVertex(), loopGetAlpha(), loopGetNextVertex(), and m_vertexIsInTriangle.

Referenced by doLoopSubD().

void WTriangleMesh::loopEraseTriangleFromVertex ( size_t  triId,
size_t  vertId 
) [private]

erases a triangle from the vertexe's list of triangles it is part of

Parameters:
triId
vertId

Definition at line 524 of file WTriangleMesh.cpp.

References m_vertexIsInTriangle.

Referenced by loopSetTriangle().

double WTriangleMesh::loopGetAlpha ( int  n) [private]

loop helper function

Parameters:
n
Returns:
alpha

Definition at line 535 of file WTriangleMesh.cpp.

Referenced by loopCalcNewPosition().

size_t WTriangleMesh::loopGetNextVertex ( size_t  triNum,
size_t  vertNum 
) [private]

returns the id of the next vertex int he triangle

Parameters:
triNumid of the triangle
vertNumid of the vertex
Returns:
id of the next vertex

Definition at line 550 of file WTriangleMesh.cpp.

References getTriVertId0(), getTriVertId1(), and getTriVertId2().

Referenced by loopCalcNewPosition().

size_t WTriangleMesh::loopGetThirdVert ( size_t  coVert1,
size_t  coVert2,
size_t  triangleNum 
) [private]

returns the id of the third vertex of a triangle for two given vertexes

Parameters:
coVert1
coVert2
triangleNum
Returns:
id of the third vertex

Definition at line 563 of file WTriangleMesh.cpp.

References getTriVertId0(), getTriVertId1(), and getTriVertId2().

Referenced by loopCalcEdgeVert().

void WTriangleMesh::loopInsertCenterTriangle ( size_t  triId) [private]

inserts the center triangle in a given triangle,

Parameters:
triIdthe triangle id

Definition at line 428 of file WTriangleMesh.cpp.

References addTriangle(), getTriVertId0(), getTriVertId1(), getTriVertId2(), and loopCalcEdgeVert().

Referenced by doLoopSubD().

void WTriangleMesh::loopInsertCornerTriangles ( size_t  triId) [private]

inserts the 3 corner triangles in a given triangle

Parameters:
triIdthe triangle id

Definition at line 489 of file WTriangleMesh.cpp.

References addTriangle(), getTriVertId0(), getTriVertId1(), getTriVertId2(), loopSetTriangle(), and m_numTriFaces.

Referenced by doLoopSubD().

void WTriangleMesh::loopSetTriangle ( size_t  triId,
size_t  vertId1,
size_t  vertId2,
size_t  vertId3 
) [private]

changes the vertex ids of a triangle

Parameters:
triId
vertId1
vertId2
vertId3

Definition at line 511 of file WTriangleMesh.cpp.

References getTriVertId1(), getTriVertId2(), loopEraseTriangleFromVertex(), m_vertexIsInTriangle, setTriVert0(), setTriVert1(), and setTriVert2().

Referenced by loopInsertCornerTriangles().

bool WTriangleMesh::operator== ( const WTriangleMesh rhs) const [inline]

Checks if two meshes are exactly the same.

Same number of triangles, and points, and indices as well as same ordering. Keep in mind different ordering might result in the same structure but is considered different here.

Parameters:
rhsThe other mesh to compare with
Returns:
True if and only if both: vertices and triangles are exactly the same.

Definition at line 614 of file WTriangleMesh.h.

References m_triangles, and m_verts.

void WTriangleMesh::recalcVertNormals ( ) [private]
void WTriangleMesh::removeTriangle ( size_t  index) [private]

removes a triangle from the mesh

Parameters:
indexthe triangle to remove

Definition at line 228 of file WTriangleMesh.cpp.

References m_countTriangles, m_meshDirty, and m_triangles.

void WTriangleMesh::removeVertex ( size_t  index) [private]

removes a vertex from the vertex array, if any triangles still index that vertex they will be removed if forceRemoveTriangle is true

Parameters:
indexthe index of the vertex to remove

Definition at line 209 of file WTriangleMesh.cpp.

References m_countTriangles, m_countVerts, m_meshDirty, m_triangles, and m_vertexIsInTriangle.

void WTriangleMesh::setTriangleColor ( size_t  index,
osg::Vec4  color 
)

sets the color for a given triangle

Parameters:
index
color

Definition at line 136 of file WTriangleMesh.cpp.

References m_countTriangles.

void WTriangleMesh::setTriVert0 ( size_t  triId,
size_t  vertId 
) [inline, private]

higher level access function to the triangle vector, sets the first vertex of a triangle to a given vertex id

Parameters:
triIdthe id of the triangle to modify
vertIdnew id of the first vertex

Definition at line 655 of file WTriangleMesh.h.

References m_countTriangles, m_countVerts, and m_triangles.

Referenced by loopSetTriangle().

void WTriangleMesh::setTriVert1 ( size_t  triId,
size_t  vertId 
) [inline, private]

higher level access function to the triangle vector, sets the second vertex of a triangle to a given vertex id

Parameters:
triIdthe id of the triangle to modify
vertIdnew id of the second vertex

Definition at line 662 of file WTriangleMesh.h.

References m_countTriangles, m_countVerts, and m_triangles.

Referenced by loopSetTriangle().

void WTriangleMesh::setTriVert2 ( size_t  triId,
size_t  vertId 
) [inline, private]

higher level access function to the triangle vector, sets the third vertex of a triangle to a given vertex id

Parameters:
triIdthe id of the triangle to modify
vertIdnew id of the third vertex

Definition at line 669 of file WTriangleMesh.h.

References m_countTriangles, m_countVerts, and m_triangles.

Referenced by loopSetTriangle().

void WTriangleMesh::setVertex ( size_t  index,
osg::Vec3  vert 
) [inline]

sets a vertex to a new position

Parameters:
index
vert

Definition at line 700 of file WTriangleMesh.h.

void WTriangleMesh::setVertexColor ( size_t  index,
osg::Vec4  color 
)

sets the color for a given vertex

Parameters:
index
color

Definition at line 130 of file WTriangleMesh.cpp.

References m_countVerts.

Referenced by addMesh().

void WTriangleMesh::setVertexNormal ( size_t  index,
WPosition  normal 
)

sets the normal for a given vertex

Parameters:
index
normal

Definition at line 124 of file WTriangleMesh.cpp.

References m_countVerts, and setVertexNormal().

void WTriangleMesh::setVertexNormal ( size_t  index,
osg::Vec3  normal 
)

sets the normal for a given vertex

Parameters:
index
normal

Definition at line 118 of file WTriangleMesh.cpp.

References m_countVerts.

Referenced by setVertexNormal().

void WTriangleMesh::translateMesh ( float  xOff,
float  yOff,
float  zOff 
)

moves the entire mesh to a new postion

Parameters:
xOff
yOff
zOff

Definition at line 597 of file WTriangleMesh.cpp.

size_t WTriangleMesh::triangleSize ( ) const

getter

Returns:
number of triangles in the mesh

Definition at line 314 of file WTriangleMesh.cpp.

References m_countTriangles.

Referenced by tm_utils::componentDecomposition(), and tm_utils::operator<<().

void WTriangleMesh::updateVertsInTriangles ( ) [private]

updates the list for which vertexes appear in which triangle

Definition at line 263 of file WTriangleMesh.cpp.

References getTriVertId0(), getTriVertId1(), getTriVertId2(), m_countTriangles, and m_vertexIsInTriangle.

Referenced by doLoopSubD(), and recalcVertNormals().

size_t WTriangleMesh::vertSize ( ) const

getter

Returns:
number of vertices in the mesh

Definition at line 309 of file WTriangleMesh.cpp.

References m_countVerts.

Referenced by tm_utils::componentDecomposition(), and tm_utils::operator<<().

void WTriangleMesh::zoomMesh ( float  zoom)

multiplies the vertex vectors of the mesh with a given number

Parameters:
zoom

Definition at line 606 of file WTriangleMesh.cpp.


Member Data Documentation

size_t WTriangleMesh::m_countVerts [private]

flag indicating a change took place which requires a recalculation of components

Definition at line 561 of file WTriangleMesh.h.

Referenced by addMesh(), doLoopSubD(), getTriangleNormalArray(), getVertexNormalArray(), recalcVertNormals(), removeTriangle(), and removeVertex().

flag indicating whether the neighbor information has been calculated yet

Definition at line 563 of file WTriangleMesh.h.

Referenced by calcNeighbors().

size_t WTriangleMesh::m_numTriFaces [private]

stores the number of triangles before the loop subdivion is run, needed by the loop algorithm

Definition at line 586 of file WTriangleMesh.h.

Referenced by doLoopSubD(), loopCalcEdgeVert(), and loopInsertCornerTriangles().

size_t WTriangleMesh::m_numTriVerts [private]

stores the number of vertexes before the loop subdivion is run, needed by the loop algorithm

Definition at line 584 of file WTriangleMesh.h.

Referenced by doLoopSubD().

boost::shared_ptr< WPrototyped > WTriangleMesh::m_prototype = boost::shared_ptr< WPrototyped >() [static, protected]

The prototype as singleton.

Definition at line 379 of file WTriangleMesh.h.

Referenced by getPrototype().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::m_textureCoordinates [private]

array containing the texture coordinates

Definition at line 567 of file WTriangleMesh.h.

Referenced by getTextureCoordinateArray(), and WTriangleMesh().

osg::ref_ptr< osg::Vec4Array > WTriangleMesh::m_triangleColors [private]

array containing the triangle colors

Definition at line 577 of file WTriangleMesh.h.

Referenced by doLoopSubD(), getTriangleColors(), and WTriangleMesh().

std::vector< std::vector< size_t > > WTriangleMesh::m_triangleNeighbors [private]

edge neighbors for each triangle

Definition at line 582 of file WTriangleMesh.h.

Referenced by calcNeighbors().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::m_triangleNormals [private]

array containing the triangle normals

Definition at line 575 of file WTriangleMesh.h.

Referenced by getTriangleNormalArray(), and WTriangleMesh().

std::vector< size_t > WTriangleMesh::m_triangles [private]
osg::ref_ptr< osg::Vec4Array > WTriangleMesh::m_vertColors [private]

array containing vertex colors

Definition at line 571 of file WTriangleMesh.h.

Referenced by doLoopSubD(), getVertColor(), getVertexColorArray(), and WTriangleMesh().

std::vector< std::vector< size_t > > WTriangleMesh::m_vertexIsInTriangle [private]

for each vertex, list of triangles it is part of

Definition at line 580 of file WTriangleMesh.h.

Referenced by doLoopSubD(), getNeighbor(), loopCalcNewPosition(), loopEraseTriangleFromVertex(), loopSetTriangle(), recalcVertNormals(), removeVertex(), and updateVertsInTriangles().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::m_vertNormals [private]

array containing the vertex normals

Definition at line 569 of file WTriangleMesh.h.

Referenced by doLoopSubD(), getNormal(), getVertexNormalArray(), and WTriangleMesh().

osg::ref_ptr< osg::Vec3Array > WTriangleMesh::m_verts [private]

array containing the vertices

Definition at line 565 of file WTriangleMesh.h.

Referenced by doLoopSubD(), getTriVert(), getVertex(), getVertexArray(), operator==(), and WTriangleMesh().


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends