Cleaning up decimation, moving to sets.

This commit is contained in:
David Williams 2007-09-23 23:54:10 +00:00
parent 42e4526498
commit cabc988625
5 changed files with 41 additions and 29 deletions

View File

@ -35,6 +35,9 @@ namespace Ogre
{
public:
friend bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
friend bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
//int crud;
SurfaceVertexIterator target;
@ -52,10 +55,7 @@ namespace Ogre
std::string toString(void);
bool isDegenerate(void);
};
bool operator == (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs);
};
}
#endif

View File

@ -34,16 +34,22 @@ namespace Ogre
class SurfaceTriangle
{
public:
SurfaceEdgeIterator edge;
SurfaceTriangle();
friend bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
friend bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
const SurfaceEdgeIterator& getEdge(void) const;
void setEdge(const SurfaceEdgeIterator& edgeToSet);
//std::string toString(void);
private:
SurfaceEdgeIterator edge;
};
bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs);
//bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs);
}

View File

@ -15,9 +15,8 @@ namespace Ogre
{
return
(
(lhs.target == rhs.target) &&
//(lhs.triangle == rhs.triangle)
(lhs.otherHalfEdge == rhs.otherHalfEdge)
((*lhs.target) == (*rhs.target)) &&
((*lhs.otherHalfEdge->target) == (*rhs.otherHalfEdge->target))
);
}
@ -28,14 +27,16 @@ namespace Ogre
bool operator < (const SurfaceEdge& lhs, const SurfaceEdge& rhs)
{
if(lhs.target == rhs.target)
{
if(lhs.otherHalfEdge->target == rhs.otherHalfEdge->target)
{
return false;
}
return (*(lhs.otherHalfEdge->target) < *(rhs.otherHalfEdge->target));
}
return (*(lhs.target) < *(rhs.target));
if ((*lhs.target) < (*rhs.target))
return true;
if ((*rhs.target) < (*lhs.target))
return false;
if ((*lhs.otherHalfEdge->target) < (*rhs.otherHalfEdge->target))
return true;
if ((*rhs.otherHalfEdge->target) < (*lhs.otherHalfEdge->target))
return false;
return false;
}
}

View File

@ -87,7 +87,7 @@ namespace Ogre
SurfaceTriangle triangle;
triangle.edge = v0v1Iter;
triangle.setEdge(v0v1Iter);
//m_listTriangles.push_back(triangle);
//SurfaceTriangleIterator iterTriangle = m_listTriangles.end();
@ -273,7 +273,7 @@ namespace Ogre
std::vector<SurfaceVertex>::iterator iterVertex;
SurfaceEdgeIterator edgeIter;
edgeIter = iterTriangles->edge;
edgeIter = iterTriangles->getEdge();
//LogManager::getSingleton().logMessage("Edge Target " + StringConverter::toString(edgeIter->target->position.x) + "," + StringConverter::toString(edgeIter->target->position.y) + "," + StringConverter::toString(edgeIter->target->position.z));
iterVertex = find(vertexData.begin(), vertexData.end(), *(edgeIter->target));
//LogManager::getSingleton().logMessage("");

View File

@ -8,6 +8,16 @@ namespace Ogre
{
}
const SurfaceEdgeIterator& SurfaceTriangle::getEdge(void) const
{
return edge;
}
void SurfaceTriangle::setEdge(const SurfaceEdgeIterator& edgeToSet)
{
edge = edgeToSet;
}
/*std::string SurfaceTriangle::toString(void)
{
std::stringstream ss;
@ -35,16 +45,11 @@ namespace Ogre
bool operator == (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs)
{
return lhs.edge == rhs.edge;
return (*lhs.edge == *rhs.edge);
}
bool operator < (const SurfaceTriangle& lhs, const SurfaceTriangle& rhs)
{
return (*lhs.edge < *rhs.edge);
}
/*bool operator < (const SurfaceTriangleIterator& lhs, const SurfaceTriangleIterator& rhs)
{
return (*lhs) < (*rhs);
}*/
}