Commit d2282716 authored by untereiner's avatar untereiner

suppression des vieux embeddedMap + fichier non utilisé

parent 1b6e8c10
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2011, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.u-strasbg.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#ifndef __EMBEDDED_MAP2_H__
#define __EMBEDDED_MAP2_H__
#include "Topology/generic/genericmap.h"
namespace CGoGN
{
/**
* Class of 2-dimensional maps
* with lazily managed embeddings
*/
template <typename MAP2>
class EmbeddedMap2 : public MAP2
{
public:
typedef MAP2 TOPO_MAP;
/**
* The attributes attached to the old vertex are duplicated on both resulting vertices
* No attribute is attached to the new edge
*/
virtual void splitVertex(Dart d, Dart e) ;
/**
* The attributes attached to the face of d are kept on the resulting face
*/
virtual bool deleteVertex(Dart d) ;
/**
* No attribute is attached to the new edge
* The attributes attached to the face of dart d are kept on the resulting face
*/
virtual void linkVertices(Dart d, Dart e) ;
/**
* No attribute is attached to the new vertex
* The attributes attached to the old edge are duplicated on both resulting edges
*/
virtual void cutEdge(Dart d) ;
/**
* The attributes attached to the edge of d are kept on the resulting edge
*/
virtual void uncutEdge(Dart d) ;
/**
* Check if the edge of d can be collapsed or not based on some topological conditions
* @param d a dart of the edge to test
* @return true if the edge can be collapsed, false otherwise
*/
bool edgeCanCollapse(Dart d) ;
/**
* The attributes attached to the vertex of dart d are kept on the resulting vertex
* See 'collapseDegeneratedFace' to see what can happen to edges attributes
* Nothing has to be done for the faces (some degenerate ones can be deleted)
*/
virtual Dart collapseEdge(Dart d, bool delDegenerateFaces = true) ;
/**
* No cell is created or deleted
*/
virtual bool flipEdge(Dart d) ;
/**
* No cell is created or deleted
*/
virtual bool flipBackEdge(Dart d) ;
/**
* The attributes attached to the vertex of dart d are kept on the resulting vertex
* The attributes attached to the face of dart d are overwritten on the face of dart e
*/
virtual void insertEdgeInVertex(Dart d, Dart e);
/**
* The attributes attached to the vertex of dart d are kept on the resulting vertex
* The attributes attached to the face of dart d are overwritten on the face of dart e
*/
virtual void removeEdgeFromVertex(Dart d);
/**
* The attributes attached to the vertices of the edge of d are kept on the vertices of the resulting edge
* The attributes attached to the edge of d are kept on the resulting edge
*/
virtual void sewFaces(Dart d, Dart e) ;
/**
* The attributes attached to the vertices of the old edge of d are duplicated on the vertices of both resulting edges
* The attributes attached to the old edge are duplicated on both resulting edges
*/
virtual void unsewFaces(Dart d) ;
/**
* The attributes attached to the edge of d are kept on the resulting edge
*/
virtual bool collapseDegeneratedFace(Dart d);
/**
* No attribute is attached to the new edge
* The attributes attached to the old face are duplicated on both resulting faces
*/
virtual void splitFace(Dart d, Dart e) ;
/**
* The attributes attached to the face of dart d are kept on the resulting face
*/
virtual bool mergeFaces(Dart d) ;
/**
* The attributes attached to the vertices of the face of d are kept on the resulting vertices
* The attributes attached to the edges of the face of d are kept on the resulting edges
*/
virtual bool mergeVolumes(Dart d, Dart e) ;
/**
* No attribute is attached to the new face
*/
virtual unsigned int closeHole(Dart d);
virtual bool check() ;
} ;
} // namespace CGoGN
#include "embeddedMap2.hpp"
#endif
This diff is collapsed.
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2011, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.u-strasbg.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#ifndef __EMBEDDED_MAP3_H__
#define __EMBEDDED_MAP3_H__
#include "Topology/generic/genericmap.h"
namespace CGoGN
{
/**
* Class of 3-dimensional maps
* with lazily managed embeddings
*/
template <typename MAP3>
class EmbeddedMap3 : public MAP3
{
public:
typedef MAP3 TOPO_MAP;
//!
/*!
*
*/
virtual void sewVolumes(Dart d, Dart e);
//!
/*!
*
*/
virtual void unsewVolumes(Dart d);
//!
/*!
*
*/
virtual bool mergeVolumes(Dart d);
//! Split a face inserting an edge between two vertices
/*! \pre Dart d and e should belong to the same face and be distinct
* @param d dart of first vertex
* @param e dart of second vertex
* @return the dart of the new edge lying in the vertex of d after the cut
*/
virtual void splitFace(Dart d, Dart e);
//! Cut the edge of d
/*! @param d a dart of the edge to cut
*/
virtual void cutEdge(Dart d);
//!
/*!
*
*/
virtual Dart cutSpike(Dart d);
//! Collapse an edge (that is deleted) possibly merging its vertices
/*! If delDegenerateFaces is true, the method checks that no degenerate
* faces are build (faces with less than 3 edges). If it occurs the faces
* are deleted and the adjacencies are updated (see deleteIfDegenerated).
* \warning This may produce two distinct vertices if the edge
* was the only link between two border faces
* @param d a dart in the deleted edge
* @param delDegenerateFaces a boolean (default to true)
*/
virtual int collapseEdge(Dart d, bool delDegenerateFaces = true,
bool delDegenerateVolumes = true);
//!
/*!
*
*/
virtual void collapseFace(Dart d, bool delDegenerateFaces = true,
bool delDegenerateVolumes = true);
virtual unsigned int closeHole(Dart d);
virtual void closeMap(DartMarker &marker);
virtual bool check();
} ;
} // namespace CGoGN
#include "embeddedMap3.hpp"
#endif
This diff is collapsed.
/*******************************************************************************
* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps *
* version 0.1 *
* Copyright (C) 2009-2011, IGG Team, LSIIT, University of Strasbourg *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the License, or (at your *
* option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
* *
* Web site: http://cgogn.u-strasbg.fr/ *
* Contact information: cgogn@unistra.fr *
* *
*******************************************************************************/
#ifndef __INDEXEDMAP3_H__
#define __INDEXEDMAP3_H__
#include "Topology/map/map3.h"
#include "indexEmb.h"
class DP_IndMap3 : public DefaultDartParameters
{
public:
static const int nbInvolutions=2;
static const int nbEmbeddings=4;
};
typedef tMap3< DartObjDualMap<DP_IndMap3> > IMAP3;
template<typename EMBV>
class IndexedMapd3Topology: public IMAP3
{
protected:
/**
* Table of darts per vertex
*/
std::vector<Dart> m_tableVertexDart;
/**
* Table of darts per edge
*/
std::vector<Dart> m_tableEdgeDart;
/**
* Table of darts per face
*/
std::vector<Dart> m_tableFaceDart;
/**
* Table of darts per volume
*/
std::vector<Dart> m_tableVolumeDart;
int nbPoints;
vector< Vector3 > seqPoints;
/**
* Table of edges indices
*/
SeqEdges m_edgesTopoIndices;
/**
* Table of face indices
*/
SeqTriangles m_facesTopoIndices;
/**
* Table of volume indices
*/
SeqTriangles m_volumesTopoIndices;
Data< std::string > filename;
public:
const unsigned BAD_INDEX = 0xffffffff;
/**
* Embedding methods
*/
IndexT getVertexIndex(Dart d) { IndexEmb* ie = reinterpret_cast<IndexEmb*>(d->getEmb(0));
if (ie != NULL) return ie->getVal();
return BAD_INDEX;}
IndexT getEdgeIndex(Dart d) { IndexEmb* ie = reinterpret_cast<IndexEmb*>(d->getEmb(1));
if (ie != NULL) return ie->getVal();
return BAD_INDEX;}
IndexT getFaceIndex(Dart d) { IndexEmb* ie = reinterpret_cast<IndexEmb*>(d->getEmb(2));
if (ie != NULL) return ie->getVal();
return BAD_INDEX;}
IndexT getVolumeIndex(Dart d) { IndexEmb* ie = reinterpret_cast<IndexEmb*>(d->getEmb(3));
if (ie != NULL) return ie->getVal();
return BAD_INDEX;}
void setVertexEmb(Dart d, IndexEmb* e) { embedOrbit(0,d,0,e);}
void setEdgeEmb(Dart d, IndexEmb* e) { embedOrbit(1,d,1,e);}
void setFaceEmb(Dart d, IndexEmb* e) { embedOrbit(2,d,2,e);}
void setVolumeEmb(Dart d, IndexEmb* e) { embedOrbit(3,d,3,e);}
void setVertexIndex(Dart d, IndexT i ) {IndexEmb* e = IndexEmb::create(i); embedOrbit(0,d,0,e);}
void setEdgeIndex(Dart d, IndexT i) {IndexEmb* e = IndexEmb::create(i); embedOrbit(1,d,1,e);}
void setFaceIndex(Dart d, IndexT i) {IndexEmb* e = IndexEmb::create(i); embedOrbit(2,d,2,e);}
void setVolumeIndex(Dart d, IndexT i) {IndexEmb* e = IndexEmb::create(i); embedOrbit(3,d,3,e);}
// constructor
IndexedMapd3Topology();
virtual void clear();
virtual bool load(const char* filename);
virtual int getNbPoints() const;
// Complete sequence accessors
virtual const SeqEdges& getEdges();
virtual const SeqTriangles& getTriangles();
virtual const SeqQuads& getQuads();
virtual const SeqTetras& getTetras();
virtual const SeqHexas& getHexas();
// Points accessors (not always available)
virtual bool hasPos() const;
virtual double getPX(int i) const;
virtual double getPY(int i) const;
virtual double getPZ(int i) const;
virtual std::string getFilename() const{return filename.getValue();}
void parse(core::objectmodel::BaseObjectDescription* arg)
{
if (arg->getAttribute("filename")) {
filename.setValue( arg->getAttribute("filename") );
this->load(arg->getAttribute("filename"));
}
arg->removeAttribute("filename");
this->core::componentmodel::topology::Topology::parse(arg);
}
};
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment