25 #ifndef WTRIANGLEMESH_H
26 #define WTRIANGLEMESH_H
34 #include "../common/math/linearAlgebra/WPosition.h"
35 #include "../common/math/linearAlgebra/WVectorFixed.h"
36 #include "../common/WAssert.h"
37 #include "../common/WColor.h"
38 #include "../common/WTransferable.h"
51 typedef boost::shared_ptr< WTriangleMesh >
SPtr;
56 typedef boost::shared_ptr< const WTriangleMesh >
ConstSPtr;
72 WTriangleMesh( osg::ref_ptr< osg::Vec3Array > vertices,
const std::vector< size_t >& triangles );
91 virtual const std::string
getName()
const;
117 size_t addVertex(
float x,
float y,
float z );
150 void addTriangle(
size_t vert0,
size_t vert1,
size_t vert2 );
159 void addTriangle( osg::Vec3 vert0, osg::Vec3 vert1, osg::Vec3 vert2 );
167 void setVertex(
size_t index, osg::Vec3 vert );
291 osg::Vec3
getVertex(
size_t index )
const;
308 osg::Vec3
getTriVert(
size_t triId,
size_t vertNum );
370 void addMesh( boost::shared_ptr<WTriangleMesh> mesh,
float xOff = 0.,
float yOff = 0.,
float zOff = 0. );
541 osg::Vec3
calcNormal( osg::Vec3 vert0, osg::Vec3 vert1, osg::Vec3 vert2 );
562 size_t getNeighbor(
const size_t coVert1,
const size_t coVert2,
const size_t triangleNum );
604 void loopSetTriangle(
size_t triId,
size_t vertId1,
size_t vertId2,
size_t vertId3 );
645 size_t loopCalcEdgeVert(
size_t triId,
size_t edgeV1,
size_t edgeV2,
size_t V3 );
671 size_t loopGetThirdVert(
size_t coVert1,
size_t coVert2,
size_t triangleNum );
839 ( *m_vertColors )[
m_countVerts ] = osg::Vec4( 1.0, 1.0, 1.0, 1.0 );
847 ( *m_verts )[index] = vert;
848 ( *m_vertNormals )[index] = osg::Vec3( 1.0, 1.0, 1.0 );
856 return "WTriangleMesh";
861 return "Triangle mesh data structure allowing for convenient access of the elements.";
866 WAssert( triId <
m_countTriangles,
"set tri vert 0: triangle id out of range" );
867 WAssert( vertId <
m_countVerts,
"vertex id out of range" );
873 WAssert( triId <
m_countTriangles,
"set tri vert 1: triangle id out of range" );
874 WAssert( vertId <
m_countVerts,
"vertex id out of range" );
880 WAssert( triId <
m_countTriangles,
"set tri vert 2: triangle id out of range" );
881 WAssert( vertId <
m_countVerts,
"vertex id out of range" );
893 WAssert( triId <
m_countTriangles,
"get tri vert id 0: triangle id out of range" );
899 WAssert( triId <
m_countTriangles,
"get tri vert id 1: triangle id out of range" );
905 WAssert( triId <
m_countTriangles,
"get tri vert id 2: triangle id out of range" );
911 ( *m_verts )[index] = vert;
914 #endif // WTRIANGLEMESH_H