25 #ifndef WVERTEXFACTORY_H_
26 #define WVERTEXFACTORY_H_
31 #include "WNewVertex.h"
32 #include "WVertexProperty.h"
33 #include "core/graphicsEngine/WTriangleMesh.h"
34 #include "core/kernel/WModule.h"
51 explicit WVertexFactory( std::shared_ptr< WTriangleMesh > triangleMesh );
73 void resize(
size_t count );
101 size_t get3rdVertexID(
size_t triangleID,
size_t vertex1,
size_t vertex2 );
168 std::shared_ptr< WProgress > progress );
177 static float getDistance( osg::Vec3 point1, osg::Vec3 point2 );
187 static osg::Vec3
add( osg::Vec3 base, osg::Vec3 sum,
float factor );
Object that contains all necessary properties of a vertex necessary for a sufficient analysis.
Depicts a point that is subdivided on a line between two vertices.
Class that manages all vertex properties.
size_t m_triangleCount
Triangle count.
WVertexProperty * getProperty(size_t vertexID)
Get properties of a vertex.
std::vector< WVertexProperty * > m_vertProp
Vertex properties data.
std::shared_ptr< WTriangleMesh > m_triangleMesh
Assigned Triangle mesh.
bool isValidTriangle(size_t triangleID)
Examine triangle by its ID for validity.
WNewVertex * getNewVertexProperty(size_t fromID, size_t toID)
Get properties of a new vertex which subdivides a line between two vertices.
size_t getVertexCount()
Returns the Property List's vertex count.
size_t get3rdVertexID(size_t triangleID, size_t vertex1, size_t vertex2)
Returns the third vertex ID of a triangle.
void setTriangleMesh(std::shared_ptr< WTriangleMesh > triangleMesh)
Sets the WTriangleMesh.
void examineStencilRange(size_t fromVertex, size_t toVertex, std::shared_ptr< WProgress > progress)
Examines Butterfly stencils of all vertices and applies settings data to the vertex.
static osg::Vec3 add(osg::Vec3 base, osg::Vec3 sum, float factor)
Adding a sum multiplied by a factor to the base number.
void attachNewVertex(size_t fromID, size_t toID)
Registering a subdividable new vertex of an ID between two vertices.
void registerTriangle(size_t vertexID, size_t triangleID)
Registers triangle to all its vertex IDs.
static float getDistance(osg::Vec3 point1, osg::Vec3 point2)
Calculate distance between two vertices.
vector< size_t > getAttachedTriangleIDs(size_t excludedTriangleID, size_t vertex1, size_t vertex2)
Returns all Triangle IDs but the excluded attached to two particular vertices.
size_t m_vertexCount
Vertex count of the property list.
void resize(size_t count)
Resizes the Vertex property list to the wished size.
virtual ~WVertexFactory()
Destroys the vertex factory object.
bool newVertexExists(size_t fromID, size_t toID)
Returns whether properties of the subdividable new vertex between two vertices alreadey exists.
WVertexFactory()
Creates a vertex factory object.