OpenWalnut  1.2.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
WTriangleMesh Class Reference

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

#include <WTriangleMesh.h>

+ Inheritance diagram for WTriangleMesh:

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.
- Public Member Functions inherited from WTransferable
 WTransferable ()
 Default constructor.
virtual ~WTransferable ()
 Destructor.
- Public Member Functions inherited from WPrototyped
 WPrototyped ()
 Default constructor.
virtual ~WPrototyped ()
 Destructor.
template<typename T >
bool isA ()
 Checks whether the actual prototype has the specified runtime type.

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 ( 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 ( 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 ( 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
inlinevirtual

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
inlinevirtual

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 
)
inlineprivate

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 
)
inlineprivate

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 
)
inlineprivate

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,
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::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::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_countTriangles
private
size_t WTriangleMesh::m_countVerts
private
bool WTriangleMesh::m_meshDirty
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().

bool WTriangleMesh::m_neighborsCalculated
private

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

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: