Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GMap3d::CGMapGeneric Class Reference

#include <g-map-generic.hh>

Inheritance diagram for GMap3d::CGMapGeneric:
GMap3d::CGMap GMap3d::CGMapBasic GMap3d::CGMapVertex

Public Member Functions

 CGMapGeneric ()
 
virtual ~CGMapGeneric ()
 
CDartalpha01 (CDart *ADart) const
 
CDartalpha010 (CDart *ADart) const
 
CDartalpha0101 (CDart *ADart) const
 
CDartalpha0101210 (CDart *ADart) const
 
CDartalpha01010 (CDart *ADart) const
 
CDartalpha01021 (CDart *ADart) const
 
CDartalpha0102101 (CDart *ADart) const
 
CDartalpha010212 (CDart *ADart) const
 
CDartalpha012 (CDart *ADart) const
 
CDartalpha0121 (CDart *ADart) const
 
CDartalpha0123 (CDart *ADart) const
 
CDartalpha012321 (CDart *ADart) const
 
CDartalpha02 (CDart *ADart) const
 
CDartalpha020 (CDart *ADart) const
 
CDartalpha021 (CDart *ADart) const
 
CDartalpha0210 (CDart *ADart) const
 
CDartalpha02101 (CDart *ADart) const
 
CDartalpha02121 (CDart *ADart) const
 
CDartalpha023 (CDart *ADart) const
 
CDartalpha03 (CDart *ADart) const
 
CDartalpha030 (CDart *ADart) const
 
CDartalpha10 (CDart *ADart) const
 
CDartalpha101 (CDart *ADart) const
 
CDartalpha1010 (CDart *ADart) const
 
CDartalpha10101 (CDart *ADart) const
 
CDartalpha1010101 (CDart *ADart) const
 
CDartalpha1012 (CDart *ADart) const
 
CDartalpha10121 (CDart *ADart) const
 
CDartalpha101201 (CDart *ADart) const
 
CDartalpha1012101 (CDart *ADart) const
 
CDartalpha101232 (CDart *ADart) const
 
CDartalpha102 (CDart *ADart) const
 
CDartalpha1021 (CDart *ADart) const
 
CDartalpha12 (CDart *ADart) const
 
CDartalpha121 (CDart *ADart) const
 
CDartalpha1210 (CDart *ADart) const
 
CDartalpha12101 (CDart *ADart) const
 
CDartalpha1212 (CDart *ADart) const
 
CDartalpha123 (CDart *ADart) const
 
CDartalpha1232 (CDart *ADart) const
 
CDartalpha12321 (CDart *ADart) const
 
CDartalpha123210 (CDart *ADart) const
 
CDartalpha13 (CDart *ADart) const
 
CDartalpha20 (CDart *ADart) const
 
CDartalpha201 (CDart *ADart) const
 
CDartalpha21 (CDart *ADart) const
 
CDartalpha210 (CDart *ADart) const
 
CDartalpha2101 (CDart *ADart) const
 
CDartalpha21012 (CDart *ADart) const
 
CDartalpha210123 (CDart *ADart) const
 
CDartalpha212 (CDart *ADart) const
 
CDartalpha2121 (CDart *ADart) const
 
CDartalpha23 (CDart *ADart) const
 
CDartalpha231 (CDart *ADart) const
 
CDartalpha2310 (CDart *ADart) const
 
CDartalpha232 (CDart *ADart) const
 
CDartalpha2321 (CDart *ADart) const
 
CDartalpha232101 (CDart *ADart) const
 
CDartalpha30 (CDart *ADart) const
 
CDartalpha301 (CDart *ADart) const
 
CDartalpha3012 (CDart *ADart) const
 
CDartalpha30120 (CDart *ADart) const
 
CDartalpha302 (CDart *ADart) const
 
CDartalpha31 (CDart *ADart) const
 
CDartalpha312 (CDart *ADart) const
 
CDartalpha32 (CDart *ADart) const
 
CDartalpha3201 (CDart *ADart) const
 
CDartalpha321 (CDart *ADart) const
 
CDartalpha321012 (CDart *ADart) const
 
CDartalpha323 (CDart *ADart) const
 
CDartgetDirectInfoAsDart (CDart *ADart, int ADirectInfoIndex)
 
Méthodes permettant d'allouer et de libérer de la mémoire aux

champs directInfo des brins, ainsi que d'effectuer la sauvegarde de coutures.

void allocMemoryToDirectInfo (int AMarkNumber, int ADirectInfoIndex, int ABytes, TOrbit AOrbitUsed=ORBIT_NONE)
 
void allocMemoryToDirectInfo (CDart *ADart, TOrbit AOrbit, int ADirectInfoIndex, int ABytes, TOrbit AOrbitUsed=ORBIT_NONE)
 
void freeMemoryFromDirectInfo (int AMarkNumber, int ADirectInfoIndex, TOrbit AOrbitUsed=ORBIT_NONE)
 
void freeMemoryFromDirectInfo (CDart *ADart, TOrbit AOrbit, int ADirectInfoIndex, TOrbit AOrbitUsed=ORBIT_NONE)
 
void saveAlphaInDirectInfo (int AAlphaIndex, int ADirectInfoIndex)
 
void initUnionFindTrees (int AIndex, TOrbit AOrbit)
 
void initTwoUnionFindTrees (int AIndex1, TOrbit AOrbit1, int AIndex2, TOrbit AOrbit2)
 
void initUnionFindTreesFaceVolume (int AIndexFace, int AIndexVol)
 
void initUnionFindTreesVerticesEdges (int AIndexVertex, int AIndexEdge)
 
CDartfindUnionFindTrees (CDart *ADart, int AIndex)
 
void mergeUnionFindTrees (CDart *ADart1, CDart *ADart2, int AIndex)
 
CDartcreateTopoTriangle ()
 
CDartcreateTopoSquare ()
 
CDartcreateTopoPolygon (int An)
 
CDartcreateTopoOpenedPole (int An)
 
CDartcreateTopoPole (int An)
 
void createTopoTube (int AMeridians, int AParallels, CDart **ABorder1, CDart **ABorder2)
 
CDartcreateTopoTube (int AMeridians, int AParallels)
 
void createTopoSphere (int AMeridians, int AParallels, CDart **ASouthPole, CDart **ANorthPole)
 
CDartcreateTopoSphere (int AMeridians, int AParallels)
 
void createTopoCylinder (int AMeridians, int AParallels, CDart **ABorder1, CDart **ABorder2, bool AClose1=true, bool AClose2=true)
 
CDartcreateTopoCylinder (int AMeridians, int AParallels, bool AClose1=true, bool AClose2=true)
 
void createTopoPyramid (int AMeridians, int AParallels, CDart **ABaseDart, CDart **APoleDart, bool ACloseBase=true)
 
CDartcreateTopoPyramid (int AMeridians, int AParallels, bool ACloseBase=true)
 
void createTopoTorus (int AMeridians, int AParallels, CDart **AEquator)
 
CDartcreateTopoTorus (int AMeridians, int AParallels)
 
void createTopoSquareIMeshed (int ASx, int ASy, int AMeshDimension, CDart *ASquareCorners[2][2])
 
void createTopoCubeIMeshed (int ASx, int ASy, int ASz, int AMeshDimension, bool ACreatedFaces[3][2], CDart *AFacesCorners[3][2][2][2])
 
void createTopoMesh1 (int ASx, CDart *AMesh1Corners[2], CDart *AModel=NULL)
 
CDartcreateTopoMesh1 (int ASx, CDart *AModel=NULL)
 
void createTopoMesh2 (int ASx, int ASy, CDart *AMesh2Corners[2][2], bool A3Sewed=false)
 
CDartcreateTopoMesh2 (int ASx, int ASy, bool A3Sewed=false)
 
void createTopoMesh3 (int ASx, int ASy, int ASz, CDart *AMesh3Corners[2][2][2])
 
CDartcreateTopoMesh3 (int ASx, int ASy, int ASz)
 
bool isIsolatedPolyline (CDart *ADart)
 
bool isClosedPolyline (CDart *ADart)
 
int getNbPolylineVertices (CDart *ADart)
 
int getNbPolylineEdges (CDart *ADart, bool AConsider0FreeDartsAsEdges=true)
 
CDartprolongPolyline (CDart *ADart)
 
CDartshortenPolyline (CDart *ADart)
 
CDartclosePolyline (CDart *ADart)
 
bool belongToSameOrientedOrbit (CDart *ADart1, CDart *ADart2, TOrbit AOrbit)
 
bool isOrientable (CDart *ADart, TOrbit AOrbit)
 
void countBorders (int AMarkNumber, int *ANb0, int *ANb1, int *ANb2, int *ANb3)
 
void countBorders (CDart *ADart, TOrbit AOrbit, int *ANb0, int *ANb1, int *ANb2, int *ANb3)
 
unsigned int countNonLocalDegreeTwoEdges ()
 
void countCells (int AMarkNumber, int *ANb0, int *ANb1, int *ANb2, int *ANb3, int *ANb4, int *ANbDarts=NULL)
 
void countCells (CDart *ADart, TOrbit AOrbit, int *ANb0, int *ANb1, int *ANb2, int *ANb3, int *ANb4, int *ANbDarts=NULL)
 
void getGlobalCharacteristics (int *ANbDarts, int *ANbVertices, int *ANbEdges, int *ANbFaces, int *ANbVolumes, int *ANbCC, int *ANb0Borders, int *ANb1Borders, int *ANb2Borders, int *ANb3Borders)
 
std::ostream & displayCharacteristics (std::ostream &AOs)
 
void getSurfaceCharacteristics (CDart *ADart, int *ANbDarts, int *ANbVertices, int *ANbEdges, int *ANbFaces, int *ANb0Borders, int *ANb1Borders, int *ANb2Borders, int *ANb2BordersWhenClosed, int *AEuler, int *AOrient, int *AGenus)
 
std::string getSurfaceName (int AB2, int AQ, int AG)
 
bool isConnex ()
 
bool checkTopology ()
 
bool checkEmbeddings (TOrbit AOrbit, int AAttributeIdentity, bool AEmbeddingMustExist=true)
 
bool isIClosedOrbit (CDart *ADart, int ADimension, TOrbit AOrbit)
 
bool isIFreeOrbit (CDart *ADart, int ADimension, TOrbit AOrbit)
 
int getMapDimension ()
 
bool isDanglingFace (CDart *ADart)
 
int degree (CDart *ADart, int ACellDim, int ABoundingCellDim=4)
 
bool isLocalDegreeTwoSup (CDart *ADart, int ACellDim)
 
bool isLocalDegreeTwoInf (CDart *ADart, int ACellDim)
 
int getSewDimension (CDart *ADart1, CDart *ADart2)
 
bool intuitiveSew (CDart *ADart1, CDart *ADart2)
 
int multiSew (CDart *ADart1, int AMarkNumber1, CDart *ADart2, int ADimension)
 
int unsewMarkedCells (int AMarkNumber, int ADim)
 
int intuitiveUnsewMarkedCells (int AMarkNumber)
 
int getBorderDimension (CDart *ADart)
 
bool markBorders (int AMarkNumber, int ADim)
 
bool markBorders (int AMarkNumber)
 
bool canSewBorders (CDart *ADart1, CDart *ADart2, int ADim, int An=0)
 
void borderTopoSew (CDart *ADart1, CDart *ADart2, int ADim, int An=0)
 
void borderSew (CDart *ADart1, CDart *ADart2, int ADim, int An=0)
 
bool intuitiveBorderSew (CDart *ADart1, CDart *ADart2, int An=0)
 
void border2TopoSew (CDart *ADart1, CDart *ADart2, int An=0)
 
void border2Sew (CDart *ADart1, CDart *ADart2, int An=0)
 
virtual void stopUp (CDart *ADart, int ADim)
 
int stopUpMarkedBorders (int AMarkNumber, int ADim)
 
int intuitiveStopUpMarkedBorders (int AMarkNumber)
 
virtual CDarttriangulateEdge (CDart *ADart)
 
virtual CDarttriangulateFace (CDart *ADart)
 
virtual CDarttriangulateVolume (CDart *ADart)
 
CDarttriangulate (CDart *ADart, int ADim)
 
int triangulateMarkedCells (int AMarkNumber, int ADim)
 
bool canQuadrangulateFace (CDart *ADart, bool AInsertVertices=true)
 
virtual CDartquadrangulateFace (CDart *ADart, bool AInsertVertices=true)
 
int quadrangulateMarkedFaces (int AMarkNumber, bool AInsertVertices=true)
 
virtual void shiftOneFictiveEdge (CDart *ADart, CDart *ADart2)
 
unsigned int shiftAllEdgesIncidentToVertex (CDart *ADart)
 
void shiftAllAdjacentFictiveEdges (CDart *ADart, int AMark)
 
void shiftAllFictiveEdges (CDart *ADart, int AMark)
 
void shiftAllFictiveEdgesAroundEdge (CDart *ADart, int AMark)
 
bool existFictiveEdgeIncidentTo (CDart *ADart, int AMark)
 
int findVertexType (CDart *ADart, CDart **AResDart, int AMark)
 
CDartfindIncidentEdgeNonLoop (CDart *ADart)
 
int markRealFace (CDart *ADart, int AMark, int AMark2)
 
int unmarkRealFace (CDart *ADart, int AMark, int AMark2)
 
virtual void shiftOneFictiveFace (CDart *ADart, int AFictiveFaceMark, int ADeleteMark)
 
virtual void shiftOneFictiveFaceAlongDanglingEdge (CDart *ADart, int AFictiveFaceMark, int ADeleteMark)
 
void shiftAllFictiveFaces (CDart *ADart, int AFictiveFaceMark, int ADeleteMark)
 
bool canShiftOneFictiveFace (CDart *ADart, int AFictiveFaceMark)
 
bool canShiftAllFictiveFaces (CDart *ADart, int AFictiveFaceMark)
 
int findEdgeType (CDart *ADart, CDart **AResDart, int AFictiveFaceMark)
 
- Public Member Functions inherited from GMap3d::CGMap
bool canSew (CDart *ADart1, CDart *ADart2, int ADimension)
 
void sew (CDart *ADart1, CDart *ADart2, int ADimension)
 
void unsew (CDart *ADart, int ADimension)
 
 CGMap ()
 Constructeur.
 
virtual ~CGMap ()
 Destructeur.
 
bool canSew0 (CDart *ADart1, CDart *ADart2)
 
bool canSew1 (CDart *ADart1, CDart *ADart2)
 
bool canSew2 (CDart *ADart1, CDart *ADart2)
 
bool canSew3 (CDart *ADart1, CDart *ADart2)
 
void sew0 (CDart *ADart1, CDart *ADart2)
 
void sew1 (CDart *ADart1, CDart *ADart2)
 
void sew2 (CDart *ADart1, CDart *ADart2)
 
void sew3 (CDart *ADart1, CDart *ADart2)
 
void unsew0 (CDart *ADart)
 
void unsew1 (CDart *ADart)
 
void unsew2 (CDart *ADart)
 
void unsew3 (CDart *ADart)
 
CCoveragegetDynamicCoverage (const CDart *ADart, TOrbit AOrbit)
 
CCoveragegetStaticCoverage (const CDart *ADart, TOrbit AOrbit)
 
CCoveragegetMultiDynamicCoverage (const CDart *ADart, TOrbit AOrbit)
 
CCoveragegetBasicDynamicCoverage (const CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
CAttributegetAttribute (const CDart *ADart, TOrbit, TAttributeId)
 
void addAttribute (CDart *ADart, TOrbit, CAttribute *)
 
CAttributeremoveAttribute (CDart *ADart, TOrbit, TAttributeId)
 
void deleteAttribute (CDart *ADart, TOrbit, TAttributeId)
 
bool isSameOrbit (CDart *ADart1, CDart *ADart2, TOrbit AOrbit)
 
CDartgetEmbeddingOwner (const CDart *ADart, TOrbit AOrbit)
 
void dartSew0 (CDart *, CDart *ADart2)
 
void dartSew1 (CDart *, CDart *ADart2)
 
void dartSew2 (CDart *, CDart *ADart2)
 
void dartSew3 (CDart *, CDart *ADart2)
 
void dartSew (CDart *, CDart *ADart2, int ADimension)
 
void dartUnsew0 (CDart *ADart)
 
void dartUnsew1 (CDart *ADart)
 
void dartUnsew2 (CDart *ADart)
 
void dartUnsew3 (CDart *ADart)
 
void dartUnsew (CDart *ADart, int ADimension)
 
void topoSew0 (CDart *ADart1, CDart *ADart2)
 
void topoSew1 (CDart *ADart1, CDart *ADart2)
 
void topoSew2 (CDart *ADart1, CDart *ADart2)
 
void topoSew3 (CDart *ADart1, CDart *ADart2)
 
void topoSew (CDart *ADart1, CDart *ADart2, int ADimension)
 
void topoUnsew0 (CDart *ADart)
 
void topoUnsew1 (CDart *ADart)
 
void topoUnsew2 (CDart *ADart)
 
void topoUnsew3 (CDart *ADart)
 
void topoUnsew (CDart *ADart, int ADimension)
 
- Public Member Functions inherited from GMap3d::CGMapBasic
bool isFree (const CDart *ADart, int ADimension) const
 
CDartalpha (const CDart *ADart, int ADimension) const
 
void linkAlpha (CDart *ADart1, CDart *ADart2, int ADimension)
 
void unlinkAlpha (CDart *ADart, int ADimension)
 
 CGMapBasic ()
 Constructeur.
 
virtual ~CGMapBasic ()
 Destructeur.
 
void randomizeDarts ()
 
void removeAllDarts ()
 
virtual void empty ()
 
int getNewDirectInfo ()
 
void freeDirectInfo (int ADirectIndex)
 
void * getDirectInfo (CDart *ADart, int ADirectIndex) const
 
void setDirectInfo (CDart *ADart, int ADirectIndex, void *APointer)
 
CDartgetFirstDart () const
 
void setFirstDart (CDart *ADart)
 
int getNewMark ()
 
bool getMaskMark (int AMarkNumber) const
 
void freeMark (int AMarkNumber)
 
void negateMaskMark (int AMarkNumber)
 
bool isWholeMapUnmarked (int AMarkNumber)
 
int getNbUsedMarks () const
 
bool isMarked (const CDart *ADart, int AMarkNumber) const
 
void setMarkTo (CDart *ADart, int AMarkNumber, bool AState)
 
void setMark (CDart *ADart, int AMarkNumber)
 
void unsetMark (CDart *ADart, int AMarkNumber)
 
void setMarks (CDart *ADart, const std::bitset< NB_MARKS > &AMarks) const
 
std::bitset< NB_MARKSgetMarks (CDart *ADart) const
 
bool isOrbitUsed (TOrbit AOrbit) const
 
void setOrbitUsed (TOrbit AOrbit)
 
void unsetOrbitUsed (TOrbit AOrbit)
 
bool isOrbitUsed (CDart *ADart, TOrbit AOrbit) const
 
virtual CDartnewDart ()
 
virtual void delDart (CDart *ADart)
 
CDartaddMapDart ()
 
void delMapDart (CDart *ADart)
 
bool isFree0 (const CDart *ADart) const
 
bool isFree1 (const CDart *ADart) const
 
bool isFree2 (const CDart *ADart) const
 
bool isFree3 (const CDart *ADart) const
 
CDartalpha0 (const CDart *ADart) const
 
CDartalpha1 (const CDart *ADart) const
 
CDartalpha2 (const CDart *ADart) const
 
CDartalpha3 (const CDart *ADart) const
 
void linkAlpha0 (CDart *ADart1, CDart *ADart2)
 
void linkAlpha1 (CDart *ADart1, CDart *ADart2)
 
void linkAlpha2 (CDart *ADart1, CDart *ADart2)
 
void linkAlpha3 (CDart *ADart1, CDart *ADart2)
 
void unlinkAlpha0 (CDart *ADart)
 
void unlinkAlpha1 (CDart *ADart)
 
void unlinkAlpha2 (CDart *ADart)
 
void unlinkAlpha3 (CDart *ADart)
 
enum  TMovement { Forward, Backward, Left, Right }
 
unsigned int markOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void halfMarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void halfUnmarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void unmarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void unmarkAll (int AMarkNumber)
 
int markIncidentCells (TOrbit AOrbit, int AMarkNumberSrce, int AMarkNumberDest)
 
int markIncidentCells (TOrbit AOrbit, int AMarkNumber)
 
void halfMarkIncidentCells (TOrbit AOrbit, int AMarkNumberSrce, int AMarkNumberDest)
 
void halfMarkIncidentCells (TOrbit AOrbit, int AMarkNumber)
 
void markInterior (CDart *ADart, int ADimension, int AMarkBorder, int AMarkInterior=-1)
 
void markIntersection (int AMarkNumber1, int AMarkNumber2, TOrbit AOrbit1, TOrbit AOrbit2, int AMarkResult, bool AInitialMarkIncidentCells=false)
 
void markCopy (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markCopy (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAdd (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAdd (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markAnd (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAnd (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markSub (int AMarkNumberFrom, int AMarkNumberTo)
 
void markSub (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markMove (int AMarkNumberFrom, int AMarkNumberTo)
 
void markMove (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
bool isWholeCellMarked (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
int getMarkedCells (TOrbit AOrbit, int AMarkNumber, CDart *ALastMarked=NULL, CDart **ADart1=NULL, CDart **ADart2=NULL, CDart **ADart3=NULL)
 
CDartgo (TMovement ADirection, CDart *ALastDart, TOrbit AOrbit, int AMarkNumber, bool ASelect=true)
 
CDartgoAsFarAsPossible (TMovement ADirection, CDart *ALastDart, TOrbit AOrbit, int AMarkNumber, bool ASelect=true)
 
int duplicateMarkedDarts (int AMarkNumber, CGMapGeneric *AMap=NULL, int ADirectInfoIndex=-1, bool ADuplicateEmbeddings=true, bool A0Sew=true, bool A1Sew=true, bool A2Sew=true, bool A3Sew=true)
 
CDartduplicateDarts (CDart *ADart, TOrbit AOrbit, CGMapGeneric *AMap=NULL, int ADirectInfoIndex=-1, bool ADuplicateEmbeddings=true)
 
int deleteMarkedDarts (int AMarkNumber)
 
void sewDuplicatedDarts (CCoverage *ACoverage, int AMarkNumber, int ADirectInfoIndex, CGMapGeneric *AMap, bool A0Sew=true, bool A1Sew=true, bool A2Sew=true, bool A3Sew=true)
 
void duplicateEmbeddingsOfDuplicatedDarts (CCoverage *ACoverage, int AMarkInitial, int AMarkDuplicated, int ADirectInfoIndex, CGMapGeneric *AMap)
 
virtual CDartinsertVertex (CDart *ADart)
 
int insertVertexOnMarkedEdges (int AMarkNumber)
 
virtual CDartinsertEdge (CDart *ADart1, CDart *ADart2)
 
int insertEdgeOnMarkedFaces (int AMarkNumber, bool ANoCrossedFace=false, bool ANoTwoEdgesFace=false)
 
bool canInsertFace (CDart *ADart, int AMarkNumber, bool ANoCrossedVolume=false, bool ANoTwoEdgesFace=false, bool ANoTwoFacesVolume=false)
 
virtual CDartinsertFace (CDart *ADart, int AMarkNumber, bool ANoCrossedVolume=false)
 
int insertFaceOnMarkedVolumes (int AMarkNumber, bool ANoCrossedVolume=false, bool ANoTwoEdgesFace=false, bool ANoTwoFacesVolume=false)
 
bool turnAroundVertex (CDart *ADart, bool ANoCrossedVolume, int AMarkNumber, CDart *&ANext, bool &ACrossed)
 
int getMergeDimension (CDart *ADart)
 
bool canMerge (CDart *ADart1, CDart *ADart2, int ADim)
 
void merge (CDart *ADart1, CDart *ADart2, int ADim, bool ADeleteDarts=false)
 
int isolateMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false)
 
int intuitiveIsolateMarkedCells (int AMarkNumber, bool ADeleteDarts=false)
 
int mergeMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false)
 
int intuitiveMergeMarkedCells (int AMarkNumber, bool ADeleteDarts=false)
 
bool canRemove (CDart *ADart, int ADim)
 
void remove (CDart *ADart, int ADim, bool ADeleteDarts=false)
 
int removeMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false)
 
int removeMarkedVerticesWithFictiveEdgeShifting (int AMarkNumber)
 
int removeMarkedEdgesWithoutDisconnectionForSurface (int AMarkNumber)
 
int removeMarkedEdgesWithoutDisconnection (int AMarkNumber)
 
int removeMarkedEdgesWithoutDisconnectionWithFaceShifting (int AMarkNumber)
 
int removeMarkedFacesButKeepBalls (int AMarkNumber)
 
bool canContract (CDart *ADart, int ADim)
 
void contract (CDart *ADart, int ADim, bool ADeleteDarts=false)
 
int contractMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false)
 
virtual int contractAndRemoveMarkedCells (int AMarkNumberC1, int AMarkNumberC2, int AMarkNumberC3, int AMarkNumberS0, int AMarkNumberS1, int AMarkNumberS2, bool ADeleteDarts=false)
 
int deleteFlatFaces ()
 
int deleteMarkedFlatFaces (int AMarkNumber)
 
int deleteFlatVolumes ()
 
int deleteMarkedFlatVolumes (int AMarkNumber)
 
int removeDanglingEdges ()
 
int removeMarkedDanglingEdges (int AMarkNumber)
 
int isolateMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts, bool AVerif, int AMarkTreated=-1)
 
void markCellsToBeIsolated (int AMarkSource, int ADim, int AMarkDestination, int AMarkTreated=-1)
 
bool canExtrudeHalfCell (CDart *ADart, int ADim, int AMarkToExtrude=-1)
 
bool canExtrudeCell (CDart *ADart, int ADim)
 
int getExtrusionDimension (CDart *ADart)
 
CDarttopoExtrude (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1)
 
virtual CDartextrudeByNormal (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef, int AMarkToExtrude=-1, int AMarkExtruded=-1)
 
int extrudeByNormalMarkedCells (int AMarkNumber, int ADim, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef)
 
int intuitiveExtrudeByNormalMarkedCells (int AMarkNumber, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef)
 
bool canExtrudeByPath (CDart *ADart, int ADim, CDart *APath)
 
virtual CDartextrudeByPath (CDart *ADart, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1)
 
virtual int extrudeByPathMarkedCells (int AMarkNumber, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews)
 
bool canExtrudeByRevolution (CDart *ADart, int ADim, bool AClosed)
 
virtual CDartcreateRevolutionPath (bool AClosed, int ANbEdges)
 
void destroyRevolutionPath (CDart *ADart)
 
virtual CDartextrudeByRevolution (CDart *ADart, int ADim, bool AClosed, int ANbEdges, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1)
 
virtual int extrudeByRevolutionMarkedCells (int AMarkNumber, int ADim, bool AClosed, int ANbEdges, bool AExtrusionWithAdjacentSews)
 
virtual int thickenMarkedDarts (int AMarkNumber, int ADirectInfoIndex1, int ADirectInfoIndex2)
 
virtual void markCellsToBeExtrudedByNormal (int ADim, int AMarkNumberSrce, int AMarkNumberDest)
 
int extrudeByNormalMarkedCells (int AMarkNumber, int ADim, int AMarkTreated, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef)
 

Additional Inherited Members

- Protected Member Functions inherited from GMap3d::CGMapBasic
void addDartInList (CDart *ADart)
 
void removeDartInList (CDart *ADart)
 
- Protected Attributes inherited from GMap3d::CGMapBasic
CDartFFirstDart
 Premier brin de la liste des brins de la carte.
 
std::bitset< NB_MARKSFUsedMarks
 Tableau indiquant quelles sont les marques prises.
 
std::bitset< NB_MARKSFMaskMarks
 Masque des marques (modifié par la méthode negateMaskMark())
 
int FMarks [NB_MARKS]
 Liste des marques libres.
 
std::bitset< 16 > FUsedOrbits
 Tableau indiquant quelles sont les orbites utilisées.
 
std::bitset< NB_DIRECT_INFOFUsedDirectInfo
 Tableau indiquant quels sont les champs direct-info utilisés.
 
int FDirectInfos [NB_DIRECT_INFO]
 Liste des champs directInfo libres.
 

Detailed Description

Définit la classe CGMapGeneric qui représente une 3-G-carte. Les opérations implémentées dans cette classe sont toutes topologiques. Celles qui modifient la carte ne mettent pas à jour les plongements (exemple: triangulation, qui ne duplique pas les plongements 'face' lors de la triangulation d'une face). La mise à jour des plongements doit donc être faite dans les méthodes des classes qui dérivent de CGMapGeneric.

Author
MOKA TEAM

Definition at line 46 of file g-map-generic.hh.

Member Enumeration Documentation

Les différents mouvements que supporte la méthode 'go'.

Enumerator:
Forward 
Backward 
Left 
Right 

Definition at line 34 of file g-map-generic.hh.

Constructor & Destructor Documentation

CGMapGeneric::CGMapGeneric ( )

Constructeur par défaut Construction d'une nouvelle instance de la classe. La g-carte créée est vide.

Returns
Une nouvelle instance de la classe

Definition at line 28 of file gmg-instance.cc.

CGMapGeneric::~CGMapGeneric ( )
virtual

Destructeur Tous les brins de la carte ainsi que leurs plongements sont détruits.

Definition at line 33 of file gmg-instance.cc.

Member Function Documentation

void CGMapGeneric::allocMemoryToDirectInfo ( int  AMarkNumber,
int  ADirectInfoIndex,
int  ABytes,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Alloue ABytes octets au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexL'indice du champ directInfo à utiliser
ABytesLe nombre d'octets à allouer
AOrbitUsedUne orbite quelconque

Definition at line 29 of file gmg-direct-info.cc.

void CGMapGeneric::allocMemoryToDirectInfo ( CDart ADart,
TOrbit  AOrbit,
int  ADirectInfoIndex,
int  ABytes,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Alloue ABytes octets au champ directInfo[ADirectInfoIndex] des brins correspondant à l'orbite donnée par le couple (ADart, AOrbit).

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est sur l'orbite (ADart, AOrbit).

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite
ADirectInfoIndexL'indice du champ directInfo à utiliser
ABytesLe nombre d'octets à allouer
AOrbitUsedUne orbite quelconque

Definition at line 67 of file gmg-direct-info.cc.

INLINE CDart * GMap3d::CGMapGeneric::alpha01 ( CDart ADart) const

Ces méthodes permettent de composer les involutions pour accéder facilement aux brins de la carte. Les indices sont donnés selon l'ordre dans lequel ils sont appliqués. Exemple: alpha123(d) signifie alpha3(alpha2(alpha1(d))).

Parameters
ADartUn pointeur sur un brin quelconque
Returns
Un pointeur sur un brin

Definition at line 35 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha010 ( CDart ADart) const

Definition at line 41 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0101 ( CDart ADart) const

Definition at line 47 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha01010 ( CDart ADart) const

Definition at line 59 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0101210 ( CDart ADart) const

Definition at line 53 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha01021 ( CDart ADart) const

Definition at line 65 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0102101 ( CDart ADart) const

Definition at line 71 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha010212 ( CDart ADart) const

Definition at line 77 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha012 ( CDart ADart) const

Definition at line 83 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0121 ( CDart ADart) const

Definition at line 95 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0123 ( CDart ADart) const

Definition at line 89 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha012321 ( CDart ADart) const

Definition at line 101 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha02 ( CDart ADart) const

Definition at line 107 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha020 ( CDart ADart) const

Definition at line 113 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha021 ( CDart ADart) const

Definition at line 119 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha0210 ( CDart ADart) const

Definition at line 125 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha02101 ( CDart ADart) const

Definition at line 131 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha02121 ( CDart ADart) const

Definition at line 137 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha023 ( CDart ADart) const

Definition at line 143 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha03 ( CDart ADart) const

Definition at line 149 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha030 ( CDart ADart) const

Definition at line 155 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha10 ( CDart ADart) const

Definition at line 161 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha101 ( CDart ADart) const

Definition at line 167 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1010 ( CDart ADart) const

Definition at line 173 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha10101 ( CDart ADart) const

Definition at line 179 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1010101 ( CDart ADart) const

Definition at line 185 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1012 ( CDart ADart) const

Definition at line 191 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha101201 ( CDart ADart) const

Definition at line 209 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha10121 ( CDart ADart) const

Definition at line 203 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1012101 ( CDart ADart) const

Definition at line 197 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha101232 ( CDart ADart) const

Definition at line 215 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha102 ( CDart ADart) const

Definition at line 221 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1021 ( CDart ADart) const

Definition at line 227 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha12 ( CDart ADart) const

Definition at line 233 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha121 ( CDart ADart) const

Definition at line 239 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1210 ( CDart ADart) const

Definition at line 245 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha12101 ( CDart ADart) const

Definition at line 251 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1212 ( CDart ADart) const

Definition at line 257 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha123 ( CDart ADart) const

Definition at line 263 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha1232 ( CDart ADart) const

Definition at line 269 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha12321 ( CDart ADart) const

Definition at line 275 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha123210 ( CDart ADart) const

Definition at line 281 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha13 ( CDart ADart) const

Definition at line 287 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha20 ( CDart ADart) const

Definition at line 293 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha201 ( CDart ADart) const

Definition at line 299 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha21 ( CDart ADart) const

Definition at line 305 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha210 ( CDart ADart) const

Definition at line 311 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha2101 ( CDart ADart) const

Definition at line 317 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha21012 ( CDart ADart) const

Definition at line 323 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha210123 ( CDart ADart) const

Definition at line 329 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha212 ( CDart ADart) const

Definition at line 335 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha2121 ( CDart ADart) const

Definition at line 341 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha23 ( CDart ADart) const

Definition at line 347 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha231 ( CDart ADart) const

Definition at line 353 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha2310 ( CDart ADart) const

Definition at line 359 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha232 ( CDart ADart) const

Definition at line 365 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha2321 ( CDart ADart) const

Definition at line 371 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha232101 ( CDart ADart) const

Definition at line 377 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha30 ( CDart ADart) const

Definition at line 383 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha301 ( CDart ADart) const

Definition at line 389 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha3012 ( CDart ADart) const

Definition at line 395 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha30120 ( CDart ADart) const

Definition at line 401 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha302 ( CDart ADart) const

Definition at line 407 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha31 ( CDart ADart) const

Definition at line 413 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha312 ( CDart ADart) const

Definition at line 419 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha32 ( CDart ADart) const

Definition at line 425 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha3201 ( CDart ADart) const

Definition at line 431 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha321 ( CDart ADart) const

Definition at line 437 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha321012 ( CDart ADart) const

Definition at line 449 of file gmg-inline.icc.

INLINE CDart * GMap3d::CGMapGeneric::alpha323 ( CDart ADart) const

Definition at line 443 of file gmg-inline.icc.

bool CGMapGeneric::belongToSameOrientedOrbit ( CDart ADart1,
CDart ADart2,
TOrbit  AOrbit 
)
Parameters
ADart1Un brin de la carte
ADart2Un brin de la carte
AOrbitUne orbite quelconque
Returns
true si ADart1 et ADart2 appartiennent à la même orbite orientée.

Definition at line 32 of file gmg-topology.cc.

void CGMapGeneric::border2Sew ( CDart ADart1,
CDart ADart2,
int  An = 0 
)

Coud les deux 2-bords désignés par les brins ADart1 et ADart2. Si An est strictement positif, sa valeur indique le nombre d'ARÊTES à coudre.

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
AnLe nombre d'arêtes à coudre

canSewBorders(ADart1, ADart2, 2, 2*An)

Definition at line 193 of file gmg-border.cc.

void CGMapGeneric::border2TopoSew ( CDart ADart1,
CDart ADart2,
int  An = 0 
)

Coud les deux 2-bords désignés par les brins ADart1 et ADart2. Si An est strictement positif, sa valeur indique le nombre d'ARÊTES à coudre.

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
AnLe nombre d'arêtes à coudre

canSewBorders(ADart1, ADart2, 2, 2*An)

Definition at line 188 of file gmg-border.cc.

void CGMapGeneric::borderSew ( CDart ADart1,
CDart ADart2,
int  ADim,
int  An = 0 
)

Coud les deux bords de dimension ADim désignés par les brins ADart1 et ADart2. Si An est strictement positif, sa valeur indique le nombre de coutures à effectuer (nombre d'itérations à effectuer sur l'itérateur de bord).

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
ADimUne dimension
AnLe nombre d'itérations à effectuer

canSewBorders(ADart1, ADart2, ADim, An)

Definition at line 160 of file gmg-border.cc.

void CGMapGeneric::borderTopoSew ( CDart ADart1,
CDart ADart2,
int  ADim,
int  An = 0 
)

Coud les deux bords de dimension ADim désignés par les brins ADart1 et ADart2. Si An est strictement positif, sa valeur indique le nombre de coutures à effectuer (nombre d'itérations à effectuer sur l'itérateur de bord).

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
ADimUne dimension
AnLe nombre d'itérations à effectuer

canSewBorders(ADart1, ADart2, ADim, An)

Definition at line 144 of file gmg-border.cc.

bool CGMapGeneric::canContract ( CDart ADart,
int  ADim 
)
Parameters
ADartUn pointeur sur un brin
ADimUne dimension
Returns
Un booléen indiquant si la cellule peut être contractée.

Definition at line 40 of file gmg-contraction.cc.

bool CGMapGeneric::canExtrudeByPath ( CDart ADart,
int  ADim,
CDart APath 
)

Teste si l'extrusion de la cellule de dimension ADim incidente à ADart selon le chemin donné par APath est possible.

Parameters
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
APathUn brin de la carte incident au chemin d'extrusion
Returns
Un booléen indiquant si l'extrusion est possible

Definition at line 424 of file gmg-extrusion.cc.

bool CGMapGeneric::canExtrudeByRevolution ( CDart ADart,
int  ADim,
bool  AClosed 
)

Teste si l'extrusion de la cellule de dimension ADim incidente à ADart autour d'un axe est possible.

Parameters
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
AClosedUn booléen indiquant si la révolution est complète (angle de 360°)
Returns
Un booléen indiquant si l'extrusion est possible

Definition at line 549 of file gmg-extrusion.cc.

bool CGMapGeneric::canExtrudeCell ( CDart ADart,
int  ADim 
)

Teste si la cellule de dimension ADim incidente à ADart (ORBIT_CELL[ADim]) peut être extrudée. C'est le cas si tous les brins qui la constituent sont ADim+1-libres ou si tous les brins qui la constituent sont ADim-libres.

Si l'extrusion est possible et si au moins un brin de la cellule est ADim-cousu, cela signifie que la cellule va être dupliquée avant l'extrusion. Par exemple pour extruder une face d'un volume, les brins de la face étant 2-cousus il faut créer de nouveaux brins et les 3-coudre à la face avant d'appliquer l'extrusion sur la demi-face nouvellement créée.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
Returns
Un booléen indiquant si l'extrusion est possible

Definition at line 63 of file gmg-extrusion.cc.

bool CGMapGeneric::canExtrudeHalfCell ( CDart ADart,
int  ADim,
int  AMarkToExtrude = -1 
)

Teste si la demi-cellule de dimension ADim incidente à ADart (ORBIT_INF[ADim]) peut être extrudée. C'est le cas si tous les brins qui la constituent sont ADim-libres.

Si AMarkToExtrude est positif ou nul, il indique les cellules qui doivent être extrudées en parallèle. Ce paramètre est utilisé par la méthode 'canExtrudeByPath'.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
AMarkToExtrudeUn numéro de marque
Returns
Un booléen indiquant si l'extrusion est possible

Definition at line 28 of file gmg-extrusion.cc.

bool CGMapGeneric::canInsertFace ( CDart ADart,
int  AMarkNumber,
bool  ANoCrossedVolume = false,
bool  ANoTwoEdgesFace = false,
bool  ANoTwoFacesVolume = false 
)

Teste s'il est possible d'insérer une face topologique dans un volume. Si ANoCrossedVolume est vrai, au moins un brin de chaque demi-arête du volume (orbite 0) correspondant à la face à créer doit être sélectionné. Si ANoCrossedVolume est faux, au moins un brin de chaque arête du volume (orbite 02) correspondant à la face à créer doit être sélectionné.

Parameters
ADartUn brin marqué du volume dans lequel insérer la face
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
ANoTwoFacesVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces
Returns
Un booléen

Definition at line 280 of file gmg-insertion.cc.

bool CGMapGeneric::canMerge ( CDart ADart1,
CDart ADart2,
int  ADim 
)

Teste si les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2 peuvent être fusionnées.

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
ADimUne dimension
Returns
Un booléen indiquant si les deux cellules peuvent être fusionnées.

Definition at line 47 of file gmg-merge.cc.

bool CGMapGeneric::canQuadrangulateFace ( CDart ADart,
bool  AInsertVertices = true 
)

Teste s'il est possible de quadranguler la face incidente à ADart. C'est toujours le cas si AInsertVertices vaut 'vrai'. Si AInsertVertices vaut 'faux', il faut que le nombre d'arêtes de la face soit pair.

Parameters
ADartUn brin de la carte
AInsertVerticesUn booléen indiquant s'il faut insérer des sommets sur les arêtes de la face avant d'effectuer la quadrangulation
Returns
Un booléen indiquant s'il est possible de quadranguler la face

Definition at line 28 of file gmg-quadrangulation.cc.

bool CGMapGeneric::canRemove ( CDart ADart,
int  ADim 
)
Parameters
ADartUn pointeur sur un brin
ADimUne dimension
Returns
Un booléen indiquant si la cellule peut être supprimée.

Definition at line 45 of file gmg-removal.cc.

bool CGMapGeneric::canSewBorders ( CDart ADart1,
CDart ADart2,
int  ADim,
int  An = 0 
)

Teste si les deux bords de dimension ADim désignés par les brins ADart1 et ADart2 peuvent être cousus. Si An est strictement positif, on teste si la couture est possible sur les An premiers brins parcourus sur chaque bord seulement.

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
ADimUne dimension
AnLe nombre d'itérations à effectuer
Returns
Un booléen indiquant si les deux bords peuvent être cousus.

Definition at line 122 of file gmg-border.cc.

bool CGMapGeneric::canShiftAllFictiveFaces ( CDart ADart,
int  AFictiveFaceMark 
)

Retourne vrai ssi les faces fictives incidente à l'arête désignée par ADart peuvent être décallées sans entraîner la création de non-variétés AFictiveFaceMark la marque pour les faces fictives,

Definition at line 218 of file gmg-fictive-face.cc.

bool CGMapGeneric::canShiftOneFictiveFace ( CDart ADart,
int  AFictiveFaceMark 
)

Retourne vrai ssi la face fictive incidente au brin ADart peut être décallée sans entraîner la création de non-variété AFictiveFaceMark la marque pour les faces fictives,

Definition at line 158 of file gmg-fictive-face.cc.

bool CGMapGeneric::checkEmbeddings ( TOrbit  AOrbit,
int  AAttributeIdentity,
bool  AEmbeddingMustExist = true 
)

Vérifie si pour chaque cellule d'orbite AOrbit de la carte il existe un seul brin de la cellule qui possède le plongement identifié par AAttributeIdentity. Si AEmbeddingMustExist vaut 'vrai', une cellule non plongée est considérée comme un problème d'intégrité de la carte.

Parameters
AOrbitl'orbite plongée à tester
AAttributeIdentityL'identificateur de l'attribut à vérifier
AEmbeddingMustExistUn booléen indiquant si la détection d'une orbite non plongée doit provoquer une erreur
Returns
Un booléen indiquant si les plongements sont cohérents

isOrbitUsed(AOrbit);

Definition at line 616 of file gmg-topology.cc.

bool CGMapGeneric::checkTopology ( )

Vérifie l'intégrité de la carte. La carte est cohérente si les orbites 0, 1, 2 et 3 sont des permutations et si les orbites 02, 03 et 13 sont des involutions.

Returns
Un booléen indiquant si la topologie de la carte est cohérente

Definition at line 554 of file gmg-topology.cc.

CDart * CGMapGeneric::closePolyline ( CDart ADart)

Ferme une polyligne pour former une face.

Parameters
ADartUn brin quelconque d'une polyligne existante
Returns
Un brin de l'arête créée pour fermer la polyligne

isIsolatedPolyline(CDart)

Definition at line 161 of file gmg-polyline.cc.

void CGMapGeneric::contract ( CDart ADart,
int  ADim,
bool  ADeleteDarts = false 
)

Contracte la cellule de dimension ADim désignées par le brin ADart.

Parameters
ADartUn pointeur sur brin
ADimUne dimension
ADeleteDartsUn booléen indiquant s'il faut supprimer les brins correspondant à la cellule contractée.

canContract(ADart, ADim)

Definition at line 48 of file gmg-contraction.cc.

int CGMapGeneric::contractAndRemoveMarkedCells ( int  AMarkNumberC1,
int  AMarkNumberC2,
int  AMarkNumberC3,
int  AMarkNumberS0,
int  AMarkNumberS1,
int  AMarkNumberS2,
bool  ADeleteDarts = false 
)
virtual

Contracte et Supprime simultanément, lorsque cela est possible, les cellules dont un brin au moins est marqué. Si un brin est marqué pour deux i-opérations, on démarque les orbites concernées auquelles il appartient

Parameters
AMarkNumberC1Un numéro de marque indiquant une 1-contraction (et vaut -1 s'il n'y a pas de 1-contractions)
AMarkNumberC2Un numéro de marque indiquant une 2-contraction (idem)
AMarkNumberC3Un numéro de marque indiquant une 3-contraction (idem)
AMarkNumberS0Un numéro de marque indiquant une 0-suppression (idem)
AMarkNumberS1Un numéro de marque indiquant une 1-suppression (idem)
AMarkNumberS2Un numéro de marque indiquant une 2-suppression (idem)
ADeleteDartsUn booléen indiquant si la contraction doit se faire en supprimant des brins
Returns
Le nombre de contractions et suppressions effectuées

Definition at line 45 of file gmg-contract-and-remove.cc.

int CGMapGeneric::contractMarkedCells ( int  AMarkNumber,
int  ADim,
bool  ADeleteDarts = false 
)

Contracte lorsque cela est possible les cellules dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (1, 2 ou 3)
ADeleteDartsUn booléen indiquant si la contraction doit se faire en supprimant des brins
Returns
Le nombre de contractions effectuées

Definition at line 92 of file gmg-contraction.cc.

void CGMapGeneric::countBorders ( int  AMarkNumber,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3 
)

Compte le nombre de bords incidents aux brins marqués avec la marque AMarkNumber. Pour ne compter que certains bords, mettre à NULL les paramêtres ANbi correspondant à une dimension non voulue.

Parameters
AMarkNumberUn numéro de marque
ANbiLe nombre de i-bords
ANb0CoupledLe nombre de faces ayant deux 0-bords

Definition at line 107 of file gmg-topology.cc.

void CGMapGeneric::countBorders ( CDart ADart,
TOrbit  AOrbit,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3 
)

Compte le nombre de bords incidents à l'orbite (ADart, AOrbit). Pour ne compter que certains bords, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
ANbiLe nombre de i-bords

Definition at line 149 of file gmg-topology.cc.

void CGMapGeneric::countCells ( int  AMarkNumber,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3,
int *  ANb4,
int *  ANbDarts = NULL 
)

Compte le nombre de cellules incidentes à un brin marqué avec la marque AMarkNumber. Pour ne compter que certains types de cellules, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
AMarkNumberUn numéro de marque
ANbiLes nombres de i-cellules

Definition at line 195 of file gmg-topology.cc.

void CGMapGeneric::countCells ( CDart ADart,
TOrbit  AOrbit,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3,
int *  ANb4,
int *  ANbDarts = NULL 
)

Compte le nombre de cellules incidentes ou incluses dans l'orbite (ADart, AOrbit). Pour ne compter que certains types de cellules, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
ANbiLes nombres de i-cellules

Definition at line 241 of file gmg-topology.cc.

unsigned int CGMapGeneric::countNonLocalDegreeTwoEdges ( )

Count the number of edges with local degree different from two. Remark: if this number is equal to zero, the map corresponds to a 2 dimensional quasi-manifols.

Returns
the number of edges with local degree different from two.

Definition at line 89 of file gmg-topology.cc.

CDart * CGMapGeneric::createRevolutionPath ( bool  AClosed,
int  ANbEdges 
)
virtual

Crée un chemin d'extrusion composé de ANbEdges arêtes, ouvert ou fermé selon la valeur de AClosed. Ce chemin est utilisé pour simuler l'extrusion par révolution autour d'un axe.

Parameters
AClosedUn booléen indiquant si la révolution est complète (angle de 360°)
ANbEdgesLe nombre d'arêtes du chemin
Returns
Un brin extrémité du chemin

Definition at line 562 of file gmg-extrusion.cc.

void CGMapGeneric::createTopoCubeIMeshed ( int  ASx,
int  ASy,
int  ASz,
int  AMeshDimension,
bool  ACreatedFaces[3][2],
CDart AFacesCorners[3][2][2][2] 
)

Crée un cube, éventuellement maillé. Le paramètre AFacesCorners permet de récupérer des brins stratégiques du cube, comme indiqué sur la figure.

ACreatedFaces[0][0] correspond à la face X0. ACreatedFaces[0][1] correspond à la face X1. ACreatedFaces[1][0] correspond à la face Y0. ACreatedFaces[1][1] correspond à la face Y1. ACreatedFaces[2][0] correspond à la face Z0. ACreatedFaces[2][1] correspond à la face Z1.

AFacesCorners[0][0] correspond aux coins de la face X0. AFacesCorners[0][1] correspond aux coins de la face X1. AFacesCorners[1][0] correspond aux coins de la face Y0. AFacesCorners[1][1] correspond aux coins de la face Y1. AFacesCorners[2][0] correspond aux coins de la face Z0. AFacesCorners[2][1] correspond aux coins de la face Z1.

Les éléments des tableaux AFacesCorners[dim][i] sont des pointeurs qui sont positionnés sur certains brins du cube. Ces brins sont numérotés sur le schéma.

Les six booléens donnés par ACreatedFaces indiquent quelles faces du cube doivent être créées.

       +----  ----+           +01--  --11+
   +   10        11          /          /    +
 11|   |          |         /          /   11|
 / |      ARRIÈRE              HAUT        / |
       |   (Y1)   |       /   (Z1)   /

/ | 00 01 / / / | 01 | +-— -—+ +00– –10+ 01 |

  • G. + + D. + |(X0)10 +01– –11+ +-— -—+ |(X1)10 | / / / 10 11 | / / / | | | / BAS AVANT | / |00 / (Z0) / | (Y0) | |00
  • / / 00 01 + +00– –10+ +-— -—+

AMeshDimension indique dans quelle dimension le cube créé doit être maillé. Pour créer un cube 3-maillé, utilisez la méthode createTopoMesh3.

Si AMeshDimension==0, les valeurs de ASx, ASy et ASz ne sont pas prises en compte.

Parameters
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
AMeshDimensionLa dimension du maillage (0, 1 ou 2)
ACreatedFacesUn tableau de dimension 3*2 de booléens
AFacesCornersUn tableau de dimension 3*2*2*2 de pointeurs sur brin

Definition at line 326 of file gmg-primitive.cc.

void CGMapGeneric::createTopoCylinder ( int  AMeridians,
int  AParallels,
CDart **  ABorder1,
CDart **  ABorder2,
bool  AClose1 = true,
bool  AClose2 = true 
)

Crée un tube de dimension AMeridians*AParallels en s'appuyant sur la méthode 'createTopoTube', et 2-coud une face de AMeridians sommets à chaque bout du tube de manière à obtenir un cylindre (selon les valeurs de AClose1 et AClose2, les bords sont fermés ou non).

Remarque : Les paramètres ABorder- passés peuvent être égaux au pointeur NULL.

Parameters
AMeridiansLe nombre (non nul) de méridiens du cylindre
AParallelsLe nombre (non nul) de parallèles du cylindre
ABorder1L'adresse d'un pointeur sur brin
ABorder2L'adresse d'un pointeur sur brin
AClose1Un booléen indiquant s'il faut fermer le bord incident à ABorder1
AClose2Un booléen indiquant s'il faut fermer le bord incident à ABorder2

Definition at line 186 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoCylinder ( int  AMeridians,
int  AParallels,
bool  AClose1 = true,
bool  AClose2 = true 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoCylinder' ci-dessus et retourne le brin correspondant à ABorder1.

Parameters
AMeridiansLe nombre (non nul) de méridiens du cylindre
AParallelsLe nombre (non nul) de parallèles du cylindre
ABorder1L'adresse d'un pointeur sur brin
ABorder2L'adresse d'un pointeur sur brin
AClose1Un booléen indiquant s'il faut fermer le bord incident à ABorder1 (voir méthode 'createTopoCylinder' ci-dessus)
AClose2Un booléen indiquant s'il faut fermer le bord incident à ABorder2 (voir méthode 'createTopoCylinder' ci-dessus)
Returns
Un brin du cylindre

Definition at line 208 of file gmg-primitive.cc.

void CGMapGeneric::createTopoMesh1 ( int  ASx,
CDart AMesh1Corners[2],
CDart AModel = NULL 
)

Crée un maillage 1d composé de ASx arêtes. Si ASx est nul, un seul sommet est créé.

AMesh1Corners[0] est positionné sur le brin 1-libre situé à la première extrémité de la polyligne créée. AMesh1Corners[1] est positionné sur le brin 1-libre situé à la deuxième extrémité de la polyligne créée.

Si AModel est NULL, le maillage créé est une polyligne, sinon c'est un faisceau calqué sur l'orbite 23 de AModel.

Parameters
ASxLe nombre d'arêtes de la polyligne
AMesh1CornersUn tableau de 2 pointeurs sur brin
AModelUn brin de la carte

Definition at line 28 of file gmg-primitive-mesh.cc.

CDart * CGMapGeneric::createTopoMesh1 ( int  ASx,
CDart AModel = NULL 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoMesh1' ci-dessus et retourne le brin correspondant à AMesh1Corners[0].

Parameters
ASxLe nombre d'arêtes de la polyligne
AModelUn brin de la carte
Returns
Un brin 1-libre de la polyligne

Definition at line 164 of file gmg-primitive-mesh.cc.

void CGMapGeneric::createTopoMesh2 ( int  ASx,
int  ASy,
CDart AMesh2Corners[2][2],
bool  A3Sewed = false 
)

Crée une grille de dimension ASx*ASy. Les éléments de AFaceCorner sont positionnés sur des brins stratégiques de la grille, comme indiqué sur le schéma.

ASx=3, ASy=2

AMesh2Corners[0][1] AMesh2Corners[1][1] +== –+– –+– ==+ | | | | | | | | +– –+– –+– –+ | | | | | | | | +== –+– –+– ==+ AMesh2Corners[0][0] AMesh2Corners[1][0]

Si A3Sewed est vrai, le maillage est doublé, c'est-à-dire que 2 grilles identiques sont créées et chaque brin qui constitue la première est 3-cousu à son homologue sur la deuxième.

Parameters
ASxLe nombre (non nul) de subdivisions de la grille selon la première dimension
ASyLe nombre (non nul) de subdivisions de la grille selon la deuxième dimension
AMesh2CornersUn tableau de taille 2*2 de pointeurs sur brin correspondant aux coins du maillage 2d
A3SewedUn booléen indiquant si le maillage est doublé

Definition at line 175 of file gmg-primitive-mesh.cc.

CDart * CGMapGeneric::createTopoMesh2 ( int  ASx,
int  ASy,
bool  A3Sewed = false 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoMesh2' ci-dessus et retourne le brin correspondant à AFaceCorners[0][0].

Parameters
ASxLe nombre (non nul) de subdivisions de la grille selon la première dimension
ASyLe nombre (non nul) de subdivisions de la grille selon la deuxième dimension
A3SewedUn booléen indiquant si le maillage est doublé
Returns
Un brin de la grille

Definition at line 276 of file gmg-primitive-mesh.cc.

void CGMapGeneric::createTopoMesh3 ( int  ASx,
int  ASy,
int  ASz,
CDart AMesh3Corners[2][2][2] 
)

Crée un maillage 3d de dimension ASx*ASy*ASz. Les éléments de AMesh3Corners sont positionnés sur des brins stratégiques du maillage, comme indiqué sur le schéma.

ASx=3, ASy=2, ASz=1

       AMesh3Corners[0][1][1]             AMesh3Corners[1][1][1]
                          +== --+-- --+-- ==+
                         /     /     /     /+
                        /     /     /     //|
                       +-- --+-- --+-- --+/ |
                      /     /     /     /+  +
                     /     /     /     //| /+ AMesh3Corners[1][1][0]

AMesh3Corners[0][0][1] +== –+– –+– ==+/ AMesh3Corners[1][0][1] +– –+– –+– –+ +/ | | | | /+ | | | |// +– –+– –+– –+/ +== –+– –+– ==+ AMesh3Corners[0][0][0] AMesh3Corners[1][0][0]

Remarque: AMesh3Corners[0][1][0] n'est pas visible.

Parameters
ASxLe nombre (non nul) de subdivisions du maillage 3d selon la première dimension
ASyLe nombre (non nul) de subdivisions du maillage 3d selon la deuxième dimension
ASzLe nombre (non nul) de subdivisions du maillage 3d selon la troisième dimension
AMesh3CornersUn tableau de taille 2*2*2 de pointeurs sur brin correspondant aux coins du maillage 3d

Definition at line 288 of file gmg-primitive-mesh.cc.

CDart * CGMapGeneric::createTopoMesh3 ( int  ASx,
int  ASy,
int  ASz 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoMesh3' ci-dessus et retourne le brin correspondant à AMesh3Corners[0][0][0].

Parameters
ASxLe nombre (non nul) de subdivisions du maillage 3d selon la première dimension
ASyLe nombre (non nul) de subdivisions du maillage 3d selon la deuxième dimension
ASzLe nombre (non nul) de subdivisions du maillage 3d selon la troisième dimension
Returns
Un brin du maillage 3d

Definition at line 446 of file gmg-primitive-mesh.cc.

CDart * CGMapGeneric::createTopoOpenedPole ( int  An)

Crée un pôle ouvert composé de An triangles 2-cousus entre eux et avec un sommet central. Le pôle est ouvert, c'est-à-dire que 2 des arêtes incidentes au sommet central ne sont pas 2-cousues.

Parameters
AnLe nombre de triangles qui composent le pôle
Returns
Un brin 2-libre du sommet central du pôle

Definition at line 81 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoPole ( int  An)

Crée un pôle composé de An triangles 2-cousus entre eux et avec un sommet central.

Parameters
AnLe nombre de triangles qui composent le pôle
Returns
Un brin du sommet central du pôle

Definition at line 102 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoPolygon ( int  An)

Crée un polygone à An côtés.

Parameters
AnLe nombre d'arêtes du polygone
Returns
Un brin du polygone

Definition at line 57 of file gmg-primitive.cc.

void CGMapGeneric::createTopoPyramid ( int  AMeridians,
int  AParallels,
CDart **  ABaseDart,
CDart **  APoleDart,
bool  ACloseBase = true 
)

Crée une pyramide à AMeridians méridiens et AParallels parallèles.

ABaseDart, s'il n'est pas NULL est positionné sur un brin 2-libre de la base (ou 2-cousu à un brin de la base si cette base est créée). APoleDart, s'il n'est pas NULL est positionné sur un brin situé sur la pointe de la pyramide.

ABaseDart et APoleDart sont situés sur le même méridien.

Remarque : Les paramètres ABaseDart et APoleDart passés peuvent être égaux au pointeur NULL.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la pyramide
AParallelsLe nombre (non nul) de parallèles de la pyramide
ABaseDartL'adresse d'un pointeur sur brin
APoleDartL'adresse d'un pointeur sur brin
ACloseBaseUn booléen indiquant si la base de la pyramide doit être fermée

Definition at line 221 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoPyramid ( int  AMeridians,
int  AParallels,
bool  ACloseBase = true 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoPyramid' ci-dessus et retourne le brin correspondant à ABaseDart.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la pyramide
AParallelsLe nombre (non nul) de parallèles de la pyramide
ACloseBaseUn booléen indiquant si la base de la pyramide doit être fermée

Definition at line 248 of file gmg-primitive.cc.

void CGMapGeneric::createTopoSphere ( int  AMeridians,
int  AParallels,
CDart **  ASouthPole,
CDart **  ANorthPole 
)

Crée un tube de dimension AMeridians*AParallels en s'appuyant sur la méthode 'createTopoTube', et 2-coud un pôle de chaque côté de ce tube afin de fermer ses bords.

Si ASouthPole n'est pas NULL, il est positionné sur un brin du sommet situé au pôle sud de la sphère créée. Si ASouthPole n'est pas NULL, il est positionné sur un brin du sommet situé au pôle nord de la sphère créée.

Remarque : Les adresses des pointeurs sur brins passés en paramètre peuvent être égales à NULL.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la sphère
AParallelsLe nombre (non nul) de parallèles de la sphère
ASouthPoleL'adresse d'un pointeur sur brin
ANorthPoleL'adresse d'un pointeur sur brin

Definition at line 149 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoSphere ( int  AMeridians,
int  AParallels 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoSphere' ci-dessus et retourne le brin correspondant à ASouthPole.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la sphère
AParallelsLe nombre (non nul) de parallèles de la sphère
Returns
Un brin de la sphère

Definition at line 174 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoSquare ( )

Crée un quadrilatère topologique (8 brins 0 et 1-cousus).

Returns
Un brin du quadrilatère

Definition at line 42 of file gmg-primitive.cc.

void CGMapGeneric::createTopoSquareIMeshed ( int  ASx,
int  ASy,
int  AMeshDimension,
CDart ASquareCorners[2][2] 
)

Crée un carré, éventuellement maillé. Le paramètre ASquareCorners permet de récupérer des brins stratégiques du carré, comme indiqué sur la figure.

ASx=3, ASy=2

ASquareCorners[0][1] ASquareCorners[1][1] +== –+– –+– ==+ | | | |

  • + | | | | +== –+– –+– ==+ ASquareCorners[0][0] ASquareCorners[1][0]

Si AMeshDimension==0, les valeurs de ASx et ASy ne sont pas prises en compte.

Parameters
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
AMeshDimensionLa dimension du maillage (0 ou 2)
ASquareCornersUn tableau de dimension 2*2 de pointeurs sur brin

Definition at line 291 of file gmg-primitive.cc.

void CGMapGeneric::createTopoTorus ( int  AMeridians,
int  AParallels,
CDart **  AEquator 
)

Crée un tube de dimension AMeridians*AParallels en s'appuyant sur la méthode 'createTopoTube', et 2-coud les deux 2-bords de ce tube de manière à obtenir un tore.

AEquator, s'il n'est pas NULL est positionné sur un brin situé sur l'équateur du tore.

Remarque : Le paramètre AEquator passé peut être égal au pointeur NULL.

Parameters
AMeridiansLe nombre (non nul) de méridiens du tore
AParallelsLe nombre (non nul) de parallèles du tore
AEquatorL'adresse d'un pointeur sur brin

Definition at line 261 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoTorus ( int  AMeridians,
int  AParallels 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoTorus' ci-dessus et retourne le brin correspondant à AEquator.

Parameters
AMeridiansLe nombre (non nul) de méridiens du tore
AParallelsLe nombre (non nul) de parallèles du tore
Returns
Un brin du tore

Definition at line 279 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoTriangle ( )

Crée un triangle topologique (6 brins 0 et 1-cousus).

Returns
Un brin du triangle

Definition at line 28 of file gmg-primitive.cc.

void CGMapGeneric::createTopoTube ( int  AMeridians,
int  AParallels,
CDart **  ABorder1,
CDart **  ABorder2 
)

Crée une grille de dimension AMeridians*AParallels en s'appuyant sur la méthode 'createTopoMesh2', et 2-coud deux côtés de cette grille pour obtenir un tube. Les deux 2-bords du tube obtenu sont composés de AMeridians arêtes chacun.

ABorder1 s'il n'est pas NULL est positionné sur un brin 2-libre du premier bord du tube. ABorder2 s'il n'est pas NULL est positionné sur un brin 2-libre du second bord du tube. ABorder1 et ABorder2 sont situés en face l'un de l'autre.

Remarque : Les paramètres ABorder- passés peuvent être égaux au pointeur NULL.

Parameters
AMeridiansLe nombre (non nul) de méridiens du tube
AParallelsLe nombre (non nul) de parallèles du tube
ABorder1L'adresse d'un pointeur sur brin
ABorder2L'adresse d'un pointeur sur brin

Definition at line 122 of file gmg-primitive.cc.

CDart * CGMapGeneric::createTopoTube ( int  AMeridians,
int  AParallels 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTopoTube' ci-dessus et retourne le brin correspondant à ABorder1.

Parameters
AMeridiansLe nombre (non nul) de méridiens du tube
AParallelsLe nombre (non nul) de parallèles du tube
Returns
Un brin du tube

Definition at line 137 of file gmg-primitive.cc.

int CGMapGeneric::degree ( CDart ADart,
int  ACellDim,
int  ABoundingCellDim = 4 
)

Calcule le degré d'une cellule de dimension ACellDim, c'est-à-dire le nombre de cellules de dimension ACellDim+1 qui lui sont incidentes. Cette méthode est utile pour tester si une fusion est possible (méthode 'canMerge').

La valeur de ABoundingCellDim indique la dimension de la cellule englobante. Par exemple, si ACellDim==0 et ABoundingCellDim==3, la méthode calcule le nombre d'arêtes incidentes au sommet désigné par ADart dont un brin au moins appartient au volume incident à ADart.

Parameters
ADartUn brin de la carte
ACellDimUne dimension
ABoundingCellDimLa dimension de la cellule englobante
Returns
La dimension de la cellule de dimension ACellDim incidente à ADart.

0 <= ACellDim < 3 ACellDim < ABoundingCell <= 4

Definition at line 28 of file gmg-degree.cc.

int CGMapGeneric::deleteFlatFaces ( )

Supprime toute les faces plates (cad composée seulement de 2 arêtes) de la carte.

Returns
Le nombre de faces plates détruites.

Definition at line 30 of file gmg-simplification.cc.

int CGMapGeneric::deleteFlatVolumes ( )

Supprime tous les volumes plats (cad composée seulement de 2 faces) de la carte.

Returns
Le nombre de volumes plats détruits.

Definition at line 45 of file gmg-simplification.cc.

int CGMapGeneric::deleteMarkedDarts ( int  AMarkNumber)

Supprime les brins marqués et découd les brins qui restent lorsque cela est nécessaire pour respecter les contraintes sur les g-cartes.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de brins supprimés

Definition at line 54 of file gmg-deletion.cc.

int CGMapGeneric::deleteMarkedFlatFaces ( int  AMarkNumber)

Supprime les faces plates dont un brin au moins est marqué.

Returns
Le nombre de faces plates détruites.

Definition at line 40 of file gmg-simplification.cc.

int CGMapGeneric::deleteMarkedFlatVolumes ( int  AMarkNumber)

Supprime les volumes plats dont un brin au moins est marqué.

Returns
Le nombre de volumes plats détruits.

Definition at line 55 of file gmg-simplification.cc.

void CGMapGeneric::destroyRevolutionPath ( CDart ADart)

Détruit un chemin de révolution créé avec la méthode 'createRevolutionPath'.

Parameters
ADartUn brin du chemin de révolution

isIsolatedPolyline(ADart)

Definition at line 574 of file gmg-extrusion.cc.

std::ostream & CGMapGeneric::displayCharacteristics ( std::ostream &  AOs)

Display all the characteristics of the map (number of darts and number of cells.

Definition at line 446 of file gmg-topology.cc.

CDart * CGMapGeneric::duplicateDarts ( CDart ADart,
TOrbit  AOrbit,
CGMapGeneric AMap = NULL,
int  ADirectInfoIndex = -1,
bool  ADuplicateEmbeddings = true 
)

Duplique les brins correspondant à l'orbite donnée en dupliquant les plongements et préservant les coutures qui peuvent l'être.

Si ADirectInfoIndex est positif ou nul, chaque brin dupliqué est pointé par le brin à partir duquel il a été créé (par le biais du champ directInfo correspondant).

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
AMapLa carte dans laquelle créer la copie
ADirectInfoIndexUn indice de champ directInfo
ADuplicateEmbeddingsUn booléen indiquant s'il faut ou non dupliquer les plongements des brins
Returns
Le brin dupliqué correspondant à ADart

Definition at line 79 of file gmg-duplication.cc.

void CGMapGeneric::duplicateEmbeddingsOfDuplicatedDarts ( CCoverage ACoverage,
int  AMarkInitial,
int  AMarkDuplicated,
int  ADirectInfoIndex,
CGMapGeneric AMap 
)
protected

Duplique les plongements des brins dupliqués.

Parameters
ACoverageUn itérateur quelconque
AMarkInitialUn numéro de marque
AMarkDuplicatedUn numéro de marque
ADirectInfoIndexUn indice de champ directInfo
AMapLa carte dans laquelle créer la copie

Definition at line 185 of file gmg-duplication.cc.

int CGMapGeneric::duplicateMarkedDarts ( int  AMarkNumber,
CGMapGeneric AMap = NULL,
int  ADirectInfoIndex = -1,
bool  ADuplicateEmbeddings = true,
bool  A0Sew = true,
bool  A1Sew = true,
bool  A2Sew = true,
bool  A3Sew = true 
)

Duplique les brins marqués et respecte dans la mesure du possible les coutures. Si ADirectInfoIndex est positif ou nul, chaque brin dupliqué est pointé par le brin à partir duquel il a été créé (par le biais du champ directInfo correspondant).

Lorsqu'un champ A-Sew vaut 'faux', aucune couture de dimension A-Sew n'est effectuée entre les brins créés.

Parameters
AMarkNumberUn numéro de marque
AMapLa carte dans laquelle créer la copie
ADirectInfoIndexUn indice de champ directInfo
ADuplicateEmbeddingsUn booléen indiquant s'il faut ou non dupliquer les plongements des brins
A-SewDes booléens indiquant quelles coutures doivent être préservées
Returns
Le nombre de brins dupliqués

Definition at line 28 of file gmg-duplication.cc.

bool CGMapGeneric::existFictiveEdgeIncidentTo ( CDart ADart,
int  AMark 
)

Definition at line 115 of file gmg-fictive-edge.cc.

CDart * CGMapGeneric::extrudeByNormal ( CDart ADart,
int  ADim,
bool  AExtrusionWithAdjacentSews,
TCoordinate  AExtrusionCoef,
int  AMarkToExtrude = -1,
int  AMarkExtruded = -1 
)
virtual

Extrude la cellule de dimension ADim incidente à ADart en s'appuyant sur la méthode 'topoExtrude'.

Le paramètre AMarkToExtrude est un numéro de marque indiquant quelles cellules doivent être extrudées. Ce paramètre est utile lors du calcul des plongements.

Pour la signification des paramètre AExtrusionWithAdjacentSews et AMarkExtruded, se reporter à la méthode 'topoExtrude'.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
AExtrusionWithAdjacentSewsUn booléen
AExtrusionCoefUn TCoordinate fixant le coefficient d'extrusion.
AMarkToExtrudeUn numéro de marque
AMarkExtrudedUn numéro de marque
Returns
Un brin de la cellule créée, situé à l'opposé de ADart

canExtrudeCell(ADart, ADim)

Reimplemented in GMap3d::CGMapVertex.

Definition at line 297 of file gmg-extrusion.cc.

int CGMapGeneric::extrudeByNormalMarkedCells ( int  AMarkNumber,
int  ADim,
bool  AExtrusionWithAdjacentSews,
TCoordinate  AExtrusionCoef 
)

Extrude lorsque c'est possible les cellules de dimension ADim qui sont marquées avec la marque AMarkNumber.

Cette méthode s'appuie sur la méthode protégée 'extrudeByNormalMarkedCells(int, int, int, bool)'.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (0, 1 ou 2)
AExtrusionWithAdjacentSewsUn booléen
AExtrusionCoefUn TCoordinate fixant le coefficient d'extrusion.
Returns
Le nombre de cellules extrudées

Definition at line 305 of file gmg-extrusion.cc.

int CGMapGeneric::extrudeByNormalMarkedCells ( int  AMarkNumber,
int  ADim,
int  AMarkTreated,
bool  AExtrusionWithAdjacentSews,
TCoordinate  AExtrusionCoef 
)
protected

Extrude lorsque c'est possible les cellules de dimension ADim qui sont marquées avec la marque AMarkNumber.

Le résultat obtenu dépend de la valeur que donne la méthode 'getExtrusionWithAdjacentSews'.

Si AMarkTreated est positif ou nul, les cellules extrudées sont marquées comme telles avec la marque AMarkTreated. Ceci permet de ne pas extruder plusieurs fois la même cellule dans des dimensions différentes (voir méthode 'intuitiveExtrudeMarkedCells').

Remarque: Comme CGMapGeneric ne traite pas les plongements, aucune vérification sur les brins sélectionnés n'est effectuée. Par exemple, en dimension 2 si un brin d'une face est sélectionné et si sont alpha0 l'est aussi, on ne peut pas effectuer le calcul des plongements car il y alpha ambiguïté sur le sens de la normale de la face à extruder. Cependant, topologiquement il n'y alpha aucun problème. Cette méthode devra donc être surchargée dans les classes dérivant de CGMapGeneric.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (0, 1 ou 2)
AMarkTreatedUn numéro de marque
AExtrusionWithAdjacentSewsUn booléen
AExtrusionCoefUn TCoordinate fixant le coefficient d'extrusion.
Returns
Le nombre de cellules extrudées

Definition at line 363 of file gmg-extrusion.cc.

CDart * CGMapGeneric::extrudeByPath ( CDart ADart,
int  ADim,
CDart APath,
bool  AExtrusionWithAdjacentSews,
int  AMarkExtruded = -1,
int  ADirectInfoIndex = -1 
)
virtual

Extrude la cellule de dimension ADim incidente à ADart selon le chemin donné par APath (orbite O1) en s'appuyant sur la méthode 'topoExtrude' appelée plusieurs fois.

Le paramètre ADirectInfoIndex est un indice de champ directInfo dans lequel sont mémorisées les ADim-coutures des brins avant extrusion. Ce paramètre est utile pour la couture des cellules extrudées adjacentes si le chemin est fermé ou si le brin initial est au milieu du chemin. En effet, dans ce cas là la cellule extrudée se retrouve isolée et lorsque ses ex-voisines sont à leur tour extrudées, on ne peut pas déterminer à quelle cellules les cellules issues de l'extrusion doivent être cousues.

Pour la signification des paramètre AExtrusionWithAdjacentSews et AMarkExtruded, se reporter à la méthode 'topoExtrude'.

Parameters
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
APathUn brin de la carte incident au chemin d'extrusion
AExtrusionWithAdjacentSewsUn booléen
AMarkExtrudedUn numéro de marque
ADirectInfoIndexUn indice de champ directInfo
Returns
Un brin de la dernière cellule créée, situé à l'opposé de ADart

canExtrudeByPath(ADart, ADim, APath)

Definition at line 440 of file gmg-extrusion.cc.

int CGMapGeneric::extrudeByPathMarkedCells ( int  AMarkNumber,
int  ADim,
CDart APath,
bool  AExtrusionWithAdjacentSews 
)
virtual

Extrude lorsque c'est possible selon le chemin donné les cellules de dimension ADim qui sont marquées avec la marque AMarkNumber.

Le résultat dépend obtenu de la valeur que donne la méthode 'getExtrusionWithAdjacentSews'.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (1 ou 2)
APathUn brin de la carte incident au chemin d'extrusion
AMarkExtrudedUn numéro de marque
Returns
Le nombre de cellules extrudées selon le chemin donné

Definition at line 501 of file gmg-extrusion.cc.

CDart * CGMapGeneric::extrudeByRevolution ( CDart ADart,
int  ADim,
bool  AClosed,
int  ANbEdges,
bool  AExtrusionWithAdjacentSews,
int  AMarkExtruded = -1,
int  ADirectInfoIndex = -1 
)
virtual

Extrude la cellule de dimension ADim incidente à ADart selon autour d'un axe. La méthode crée un chemin constitué de ANbEdges arêtes qui est fermé ou ouvert selon la valeur de AClosed puis appelle la méthode 'extrudeByPath'.

Pour la signification des paramètres AMarkExtruded et ADirectInfoIndex, se reporter à la méthode 'extrudeByPath'.

Parameters
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
AClosedUn booléen indiquant si la révolution est complète (angle de 360°)
ANbEdgesLe nombre de sections à créer
AExtrusionWithAdjacentSewsUn booléen
AMarkExtrudedUn numéro de marque
ADirectInfoIndexUn indice de champ directInfo
Returns
Un brin de la dernière cellule créée, situé à l'opposé de ADart

canExtrudeByRevolution(ADart, ADim, AClosed) ANbEdges >= 3

Definition at line 583 of file gmg-extrusion.cc.

int CGMapGeneric::extrudeByRevolutionMarkedCells ( int  AMarkNumber,
int  ADim,
bool  AClosed,
int  ANbEdges,
bool  AExtrusionWithAdjacentSews 
)
virtual

Extrude par révolution lorsque c'est possible les cellules de dimension ADim qui sont marquées avec la marque AMarkNumber.

Le résultat dépend obtenu de la valeur que donne la méthode 'getExtrusionWithAdjacentSews'.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (1 ou 2)
AClosedUn booléen indiquant si la révolution est complète (angle de 360°)
ANbEdgesLe nombre de sections à créer
AMarkExtrudedUn numéro de marque
Returns
Le nombre de cellules extrudées

Definition at line 606 of file gmg-extrusion.cc.

int CGMapGeneric::findEdgeType ( CDart ADart,
CDart **  AResDart,
int  AFictiveFaceMark 
)
Parameters
ADartUn brin de la carte
AResDartl'adresse d'un brin : paramètre retour
AFictiveFaceMarkla marque pour les faces fictives
Returns
0 ssi l'arête est incidente qu'a des faces fictives (cas de degré réel 0) ; 1 ssi une seule face réelle est incidente à l'arête et si l'arête de cette face réelle est pendante. Dans ce cas, *AResDart contiendra un brin de la face réelle. 2 ssi l'arête est de degrée réel 2 (cad incidente à 2 faces réelles distinctes). Dans ce cas, *AResDart un brin de ces faces réelles incidentes à l'arête ; 3 ssi le degré réel est > 2 ou de degré réel 1 et l'arête n'est pas pendante.

Definition at line 234 of file gmg-fictive-face.cc.

CDart * CGMapGeneric::findIncidentEdgeNonLoop ( CDart ADart)
Parameters
ADartUn brin de la carte
Returns
Un brin d'une arête non-boucle incidente au sommet désigné par ADArt s'il en existe une NULL Sinon

Definition at line 194 of file gmg-fictive-edge.cc.

CDart * CGMapGeneric::findUnionFindTrees ( CDart ADart,
int  AIndex 
)

Return the root of the uf-tree containing ADart.

Parameters
ADartthe dart to find the root.
AIndexthe direct info index to use.

Definition at line 265 of file gmg-direct-info.cc.

int CGMapGeneric::findVertexType ( CDart ADart,
CDart **  AResDart,
int  AMark 
)
Parameters
ADartUn brin de la carte
AResDartl'adresse d'un brin : paramètre retour
AMarkla marque pour les arêtes fictives
Returns
0 ssi le sommet est fictif (cas de degré réel 0) ; 1 ssi la seule arête réelle incidente au sommet est une boucle ; 2 ssi le sommet est de degré réel 2 et que les 2 arêtes réelles ne sont pas des boucles. Dans ce cas uniquement, *AResDart contiendra un des brin de ces arêtes incident au sommet ; 3 ssi soit il y a deux arêtes réelles incidente au sommet, et au moins une est une boucle, soit le degré réel est > 2.

Definition at line 126 of file gmg-fictive-edge.cc.

void CGMapGeneric::freeMemoryFromDirectInfo ( int  AMarkNumber,
int  ADirectInfoIndex,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Libère l'espace mémoire affecté au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexL'indice du champ directInfo à utiliser
AOrbitUsedUne orbite quelconque

Definition at line 82 of file gmg-direct-info.cc.

void CGMapGeneric::freeMemoryFromDirectInfo ( CDart ADart,
TOrbit  AOrbit,
int  ADirectInfoIndex,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Libère l'espace mémoire affecté au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, la libération n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite
ADirectInfoIndexL'indice du champ directInfo à utiliser
AOrbitUsedUne orbite quelconque

Definition at line 118 of file gmg-direct-info.cc.

int CGMapGeneric::getBorderDimension ( CDart ADart)

Calcule la dimension du bord incident au brin ADart.

Parameters
ADartUn brin quelconque
Returns
La dimension du bord de plus petite dimension incident au brin

La valeur retournée vaut 0, 1, 2, 3 ou 4.

Definition at line 28 of file gmg-border.cc.

INLINE CDart * GMap3d::CGMapGeneric::getDirectInfoAsDart ( CDart ADart,
int  ADirectInfoIndex 
)

Retourne le champ directInfo demandé du brin ADart après l'avoir retypé en pointeur sur un brin.

Parameters
ADartUn brin de la carte
ADirectInfoIndexUn indice de champ directInfo
Returns
Un brin de la carte

Definition at line 455 of file gmg-inline.icc.

int CGMapGeneric::getExtrusionDimension ( CDart ADart)

Donne la plus petite dimension D telle que la cellule dimension D incidente à ADart puisse être extrudée. Si l'extrusion est impossible, la méthode retourne la valeur 3.

Parameters
ADartUn brin de la carte
Returns
Une dimension d'extrusion (0, 1, 2 ou 3)

Definition at line 71 of file gmg-extrusion.cc.

void CGMapGeneric::getGlobalCharacteristics ( int *  ANbDarts,
int *  ANbVertices,
int *  ANbEdges,
int *  ANbFaces,
int *  ANbVolumes,
int *  ANbCC,
int *  ANb0Borders,
int *  ANb1Borders,
int *  ANb2Borders,
int *  ANb3Borders 
)

Calcule les caractéristiques globales de la carte (nombre de brins, de cellules, de bords). Pour ne pas calculer certaines caractéristiques, mettre à NULL les paramètres correspondants.

Parameters
ANbDartsLe nombre de brins de la carte
ANb{Vertices,...,CC}Le nombre de cellules de la carte
ANbiBordersLe nombre de i-bords de la carte

Definition at line 292 of file gmg-topology.cc.

int CGMapGeneric::getMapDimension ( )
Returns
la dimension de la carte, c'est à dire le plus grand i tel qu'il existe un brin non i-libre. Retourne -1 si tout les brins sont libre pour tout les i.

Definition at line 702 of file gmg-topology.cc.

int CGMapGeneric::getMarkedCells ( TOrbit  AOrbit,
int  AMarkNumber,
CDart ALastMarked = NULL,
CDart **  ADart1 = NULL,
CDart **  ADart2 = NULL,
CDart **  ADart3 = NULL 
)

Cherche dans la carte les cellules correspondant à AOrbit dont au moins un brin est marqué pour le numéro de marque AMarkNumber donné. Pour chacune d'entre elles, un brin marqué est choisi et l'un des paramètres ADart- est positionné sur ce brin. Si plus de 3 cellules sont marquées, seules les trois premières trouvées sont mémorisées et la valeur retournée est supérieure à trois. Si moins de 3 cellules sont marquées, les paramètres non utilisés sont positionnés à NULL. Si ALastMarked ne vaut pas NULL, il désigne un brin prioritaire sur les autres. Si ce brin est marqué, il est placé en première position (ADart1 pointe sur lui).

Parameters
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
ALastMarkedUn pointeur sur le dernier brin marqué
ADart1Une référence sur un pointeur sur un brin
ADart2Une référence sur un pointeur sur un brin
ADart3Une référence sur un pointeur sur un brin
Returns
Le nombre d'orbites marquées

Definition at line 399 of file gmg-selection.cc.

int CGMapGeneric::getMergeDimension ( CDart ADart)

Calcule la plus grande dimension pour laquelle ADart est cousu avec un autre brin. Si le brin n'est cousu ni par alpha0, ni par alpha1, ni par alpha2, ni par alpha3, la valeur retournée est -1.

Remarque: Cette méthode n'est plus utilisée par les méthodes intuitiveIsolateMarkedCells et intuitiveMergeMarkedCells.

Parameters
ADartUn brin de la carte
Returns
La plus grande dimension pour laquelle le brin n'est pas libre

La valeur retournée vaut 3, 2, 1, 0 ou -1.

Definition at line 35 of file gmg-merge.cc.

int CGMapGeneric::getNbPolylineEdges ( CDart ADart,
bool  AConsider0FreeDartsAsEdges = true 
)

Calcule le nombre d'arêtes qui composent la face incidente à ADart.

Si AConsider0FreeDartsAsEdges vaut 'vrai' et si ADart est incident à une face ouverte, les éventuels brins 0-libres situés au bout de cette face sont comptabilisés comme des arêtes.

Si AConsider0FreeDartsAsEdges vaut 'faux', les éventuels brins 0-libres situés au bout d'une face ouverte ne sont pas considérés dans le décompte du nombre d'arêtes.

Parameters
ADartUn brin de la carte
AConsider0FreeDartsAsEdgesUn booléen indiquant comment considérer les brins 0-libres
Returns
Un nombre d'arêtes

Definition at line 73 of file gmg-polyline.cc.

int CGMapGeneric::getNbPolylineVertices ( CDart ADart)

Calcule le nombre de sommets qui composent la face incidente à ADart.

Parameters
ADartUn brin de la carte
Returns
Un nombre de sommets

Definition at line 50 of file gmg-polyline.cc.

int CGMapGeneric::getSewDimension ( CDart ADart1,
CDart ADart2 
)

Retourne la plus petite dimension dans laquelle ADart1 et ADart2 peuvent être cousus.

Parameters
ADart1Un brin quelconque
ADart2Un brin quelconque
Returns
La plus petite dimension dans laquelle ADart1 et ADart2 peuvent être cousus

La valeur retournée vaut 0, 1, 2, 3 ou 4.

Definition at line 28 of file gmg-sew.cc.

void CGMapGeneric::getSurfaceCharacteristics ( CDart ADart,
int *  ANbDarts,
int *  ANbVertices,
int *  ANbEdges,
int *  ANbFaces,
int *  ANb0Borders,
int *  ANb1Borders,
int *  ANb2Borders,
int *  ANb2BordersWhenClosed,
int *  AEuler,
int *  AOrient,
int *  AGenus 
)

Calcule les caractéristiques d'une surface dont un brin est donné (nombre de brins, de cellules, de bords, caractéristique d'Euler, orientabilité, genre). Pour ne pas calculer certaines caractéristiques, mettre à NULL les paramètres correspondants.

Parameters
ADartUn brin du volume
ANbDartsLe nombre de brins du volume
ANb{Vertices,...,CC}Le nombre de cellules du volume
ANbiBordersLe nombre de i-bords du volume
ANb2BordersWhenClosedLe nombre total de 2-bords qu'on aurait si le volume incident à ADart était 0-fermé puis 1-fermé.
AEulerLa caractéristique d'Euler-Poincaré du volume
AOrientLe coefficient d'orientabilité du volume
AGenusLe genre du volume

Definition at line 314 of file gmg-topology.cc.

string CGMapGeneric::getSurfaceName ( int  AB2,
int  AQ,
int  AG 
)

Détermine à partir des caractéristiques topologiques d'une surface son nom usuel.

Parameters
AB2Le nombre de 2-bords de la surface
AQLe coefficient d'orientabilité de la surface
AGLe genre de la surface
Returns
Le nom de la surface (par exemple, "tore à 2 trous", "bouteille de Klein", etc)

Definition at line 456 of file gmg-topology.cc.

CDart * CGMapGeneric::go ( TMovement  ADirection,
CDart ALastDart,
TOrbit  AOrbit,
int  AMarkNumber,
bool  ASelect = true 
)

*** MÉTHODE À REVOIR ***

Cette méthode permet de marquer ou démarquer facilement une cellule adjacente à celle donnée par le couple (ALastDart, AOrbit). Appelée plusieurs fois (voir la méthode 'goAsFarAsPossible'), elle permet de sélectionner des brins le long d'un chemin.

Par exemple, pour couper une sphère en deux le long d'un de ses parallèles, il faut préalablement sélectionner les arêtes qui correspondent à ce parallèle. Il s'agît donc de sélectionner certaines arêtes d'un volume. Ces arêtes correspondent à une orbite 02 (deuxième ligne du tableau). Le tableau indique comment se font les déplacements. Dans ce cas précis, pour avancer on recherche alpha1210(ALastDart). Si on désire tourner à droite, c'est alpha120(ALastDart) qui est recherché, etc... Après avoir tourné à gauche ou à droite, on voit donc que pour continuer son trajet il faut repartir dans le sens contraire de celui dans lequel on est arrivé (si avant de tourner on a fait un go(Forward), il faut continuer le trajet en faisant un go(Backward) et inversement).

Si ASelect vaut 'vrai' et si un brin de l'orbite n'est pas marqué, alors tous les brins de l'orbite sont marqués avec la marque AMarkNumber et aucun déplacement n'est effectué (quelle que soit la direction donnée). Si ASelect vaut 'vrai' et si tous les brins de l'orbite sont marqués, alors un déplacement est effectué et tous les brins de l'orbite donnée correspondant au brin atteint sont marqués. Si ASelect vaut 'faux', tous les brins de l'orbite donnée sont démarqués puis un déplacement est effectué. Le brin atteint est alors marqué.

S'il n'y a pas de brin atteignable, la méthode retourne ALastDart. Sinon, qu'il y ait déplacement ou pas, la méthode retourne le brin atteint (s'il n'y a pas de déplacement ce brin est donc ALastDart).

Tableau récapitulatif: DIRECTION ORBITE Forward Backward Left Right | | | | | | 0–3 (arête /face ) | 1 0 | 0 1 | 010 | 010 | 0-2- (arête /volume) | 1[2 1]0 | 0[1 2]1 | [2]010 | 010[2] | 0-23 (arête /cc ) | 1[2[32]1]0 | 0[1[23]2]1 | [2]0 | 010[2] | 01– (face /volume) | 2 1 01 | 10 1 2 | 01 | 10 | 01-3 (face /cc ) | 2 [32]1 01 | 10 1[23] 2 | 01 | 10 | 012- (volume/cc ) | 3 2 1 012 | 210 1 2 3 | 012 | 210

Les autres orbites ne sont pas supportées (appeler la méthode avec une d'entre elles provoque un résultat imprévisible). Les crochets [] indiquent les orbites qui peuvent être ignorées. Par exemple, dans le cas de sélection de faces dans une composante connexe (orbite 013), si on effectue un go(Forward) alors que alpha2(ALastDart) est 3-libre, c'est alpha2101(ALastDart) qui sera atteint. Par contre, si ALastDart est 2-libre, ou si alpha2(ALastDart) est 1-libre, ou alpha21(ALastDart) est 0-libre, ou etc... la méthode retourne ALastDart.

Parameters
ADirectionLa direction dans laquelle se fait le déplacement
ALastDartLe brin de départ
AOrbitL'orbite indiquant quel type de déplacement effectuer
AMarkNumberUn numéro de marque
ASelectIndique s'il faut sélectionner ou désélectionner les brins
Returns
Le brin d'arrivée

L'orbite donnée est mentionnée dans le tableau récapitulatif

Definition at line 29 of file gmg-exploration.cc.

CDart * CGMapGeneric::goAsFarAsPossible ( TMovement  ADirection,
CDart ALastDart,
TOrbit  AOrbit,
int  AMarkNumber,
bool  ASelect = true 
)

Cette méthode permet de sélectionner facilement plusieurs cellules adjacentes de la carte. Elle appelle la méthode 'go' autant de fois que possible, c'est-à-dire jusqu'à atteindre un brin déjà rencontré ou un brin à partir duquel il est impossible d'avancer.

Parameters
ADirectionLa direction dans laquelle se fait le déplacement
ALastDartLe brin de départ
AOrbitL'orbite indiquant quel type de déplacement effectuer
AMarkNumberUn numéro de marque
ASelectIndique s'il faut sélectionner ou désélectionner les brins
Returns
Le brin d'arrivée

L'orbite donnée est mentionnée dans le tableau récapitulatif de la méthode 'go'

Definition at line 153 of file gmg-exploration.cc.

void CGMapGeneric::halfMarkIncidentCells ( TOrbit  AOrbit,
int  AMarkNumberSrce,
int  AMarkNumberDest 
)

Marque avec la marque AMarkNumberDest un brin sur deux des cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué avec la marque AMarkNumberSrce. Lorsqu'une cellule non orientable est marquée, elle est totalement sélectionnée. Voir la méthode 'halfMarkOrbit' pour plus d'informations.

Parameters
AOrbitUne orbite qui n'est pas une orbite de bord
AMarkNumberSrceUn numéro de marque
AMarkNumberDestUn numéro de marque

AOrbit>=ORBIT_SELF && AOrbit<=Orbit_CC AMarkNumberSrce!=AMarkNumberDest

Definition at line 149 of file gmg-selection.cc.

void CGMapGeneric::halfMarkIncidentCells ( TOrbit  AOrbit,
int  AMarkNumber 
)

Marque un brin sur deux des cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué. Lorsqu'une cellule non orientable est marquée, elle est totalement sélectionnée. Voir la méthode 'halfMarkOrbit' pour plus d'informations.

Parameters
AOrbitUne orbite qui n'est pas une orbite de bord
AMarkNumberUn numéro de marque

AOrbit>=ORBIT_SELF && AOrbit<=Orbit_CC

Definition at line 208 of file gmg-selection.cc.

void CGMapGeneric::halfMarkOrbit ( CDart ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Marque un brin sur deux de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber. Attention: Cette méthode ne fonctionne pas si l'orbite est une orbite de bord !

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque

AOrbit n'est pas une orbite de bord isOrientable(ADart, AOrbit) isMarked(ADart, AMarkNumber) Soient b un brin de l'orbite (ADart,AOrbit) et i une dimension (0, 1, 2 ou 3) tels que alpha(b,i) soit lui aussi sur l'orbite (ADart, AOrbit). On a : isMarked( b , AMarkNumber) != isMarked(alpha(b,i), AMarkNumber)

Definition at line 45 of file gmg-selection.cc.

void CGMapGeneric::halfUnmarkOrbit ( CDart ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Démarque un brin sur deux de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber. Attention: Cette méthode ne fonctionne pas si l'orbite est une orbite de bord !

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque

AOrbit n'est pas une orbite de bord isOrientable(ADart, AOrbit) !isMarked(ADart, AMarkNumber) Soient b un brin de l'orbite (ADart,AOrbit) et i une dimension (0, 1, 2 ou 3) tels que alpha(b,i) soit lui aussi sur l'orbite (ADart, AOrbit). On a : isMarked( b , AMarkNumber) != isMarked(alpha(b,i), AMarkNumber)

Definition at line 78 of file gmg-selection.cc.

void CGMapGeneric::initTwoUnionFindTrees ( int  AIndex1,
TOrbit  AOrbit1,
int  AIndex2,
TOrbit  AOrbit2 
)

Init union find trees for two direct info, and two orbits.

Parameters
AIndex1the first direct info index to use.
AOrbit1the first orbit for which initialize union find trees.
AIndex2the second direct info index to use.
AOrbit2the second orbit for which initialize union find trees.

Definition at line 161 of file gmg-direct-info.cc.

void CGMapGeneric::initUnionFindTrees ( int  AIndex,
TOrbit  AOrbit 
)

Point each dart of a same AOrbit to the first dart of this orbit. This dart point to itself. Allows to use union-find trees on this orbit.

Parameters
AIndexthe direct info index to use.
AOrbitthe orbit for which initialize union find trees.

Definition at line 141 of file gmg-direct-info.cc.

void CGMapGeneric::initUnionFindTreesFaceVolume ( int  AIndexFace,
int  AIndexVol 
)

Init union find trees for two direct info, for faces and volumes. This method is equivalent to calling initTwoUnionFindTrees with ORBIT_FACE and ORBIT_VOLUME, but it is optimized.

Parameters
AIndexFacethe direct info index for faces.
AIndexVolthe direct info index for volumes.

Definition at line 197 of file gmg-direct-info.cc.

void CGMapGeneric::initUnionFindTreesVerticesEdges ( int  AIndexVertex,
int  AIndexEdge 
)

Init union find trees for two direct info, for vertices and edges. This method is equivalent to calling initTwoUnionFindTrees with ORBIT_VERTEX and ORBIT_EDGE, but it is optimized.

Parameters
AIndexVertexthe direct info index for vertices.
AIndexEdgethe direct info index for edges.

Definition at line 230 of file gmg-direct-info.cc.

CDart * CGMapGeneric::insertEdge ( CDart ADart1,
CDart ADart2 
)
virtual

Insère une arête topologique entre les sommets incidents aux brins ADart1 et ADart2.

Parameters
ADart1Un pointeur sur un brin
ADart2Un pointeur sur un brin
Returns
Un brin de l'arête topologique insérée

canInsertEdge(ADart1, ADart2)

Definition at line 95 of file gmg-insertion.cc.

int CGMapGeneric::insertEdgeOnMarkedFaces ( int  AMarkNumber,
bool  ANoCrossedFace = false,
bool  ANoTwoEdgesFace = false 
)

Insère une arête sur chaque face dont deux sommets sont sélectionnés, lorsque cela est possible. Si ANoCrossedFace est faux, une arête n'est insérée sur une face que si exactement 2 brins de cette face sont marqués. Si ANoCrossedFace est vrai, une arête n'est insérée sur une face que si 2 sommets de cette face sont marqués (2, 3 ou 4 brins marqués).

Parameters
AMarkNumberUn numéro de marque
ANoCrossedFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer une face 'croisée', c'est-à-dire une face en forme de 8, avec deux arêtes 2-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
Returns
Le nombre d'arêtes insérées

Definition at line 151 of file gmg-insertion.cc.

CDart * CGMapGeneric::insertFace ( CDart ADart,
int  AMarkNumber,
bool  ANoCrossedVolume = false 
)
virtual

Insère une face le long des arêtes sélectionnées du volume donné.

Parameters
ADartUn brin marqué du volume dans lequel insérer la face
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
Returns
Un brin de la face créée

canInsertFace(ADart, AMarkNumber)

Definition at line 351 of file gmg-insertion.cc.

int CGMapGeneric::insertFaceOnMarkedVolumes ( int  AMarkNumber,
bool  ANoCrossedVolume = false,
bool  ANoTwoEdgesFace = false,
bool  ANoTwoFacesVolume = false 
)

Insère une face sur chaque volume dont plusieurs arêtes sont sélectionnées, lorsque cela est possible.

Parameters
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
ANoTwoFacesVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces
Returns
Le nombre de faces insérées

Definition at line 461 of file gmg-insertion.cc.

CDart * CGMapGeneric::insertVertex ( CDart ADart)
virtual

Insère un sommet topologique sur l'arête incidente au brin ADart.

Parameters
ADartUn pointeur sur un brin
Returns
Un brin du sommet topologique inséré

canInsertVertex(ADart)

Reimplemented in GMap3d::CGMapVertex.

Definition at line 29 of file gmg-insertion.cc.

int CGMapGeneric::insertVertexOnMarkedEdges ( int  AMarkNumber)

Insère un sommet sur chaque arête dont un brin au moins est marqué, lorsque cela est possible.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre d'insertions effectuées

Definition at line 68 of file gmg-insertion.cc.

bool CGMapGeneric::intuitiveBorderSew ( CDart ADart1,
CDart ADart2,
int  An = 0 
)

Coud les deux bords désignés par les brins ADart1 et ADart2. La dimension des bords est déterminée par la méthode 'getBorderDimension' appliquée sur ADart1.

Si An est strictement positif, sa valeur indique le nombre de coutures à effectuer (nombre d'itérations à effectuer sur l'itérateur de bord).

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
AnLe nombre d'itérations à effectuer
Returns
Un booléen indiquant si la couture alpha été possible

Definition at line 175 of file gmg-border.cc.

int CGMapGeneric::intuitiveExtrudeByNormalMarkedCells ( int  AMarkNumber,
bool  AExtrusionWithAdjacentSews,
TCoordinate  AExtrusionCoef 
)

Extrude lorsque c'est possible les cellules marquées avec la marque AMarkNumber. La méthode essaie d'abord d'extruder les sommets marqués, puis les arêtes et en enfin les faces.

Parameters
AMarkNumberUn numéro de marque
AExtrusionWithAdjacentSewsUn booléen
Returns
Le nombre de cellules extrudées

Definition at line 324 of file gmg-extrusion.cc.

int CGMapGeneric::intuitiveIsolateMarkedCells ( int  AMarkNumber,
bool  ADeleteDarts = false 
)

Isole lorsque cela est possible les cellules dont un brin au moins est marqué. La méthode procède en 3 passes, avec priorité aux cellules de dimension élevée (faces).

Parameters
AMarkNumberUn numéro de marque
ADeleteDartsUn booléen indiquant si les cellules isolées doivent être détruites
Returns
Le nombre de cellules isolées

Definition at line 213 of file gmg-merge.cc.

int CGMapGeneric::intuitiveMergeMarkedCells ( int  AMarkNumber,
bool  ADeleteDarts = false 
)

Fusionne lorsque cela est possible (avec leurs cellule incidente) les cellules dont un brin au moins est marqué. Les fusions sont faites en 3 passes, avec priorité aux fusions de cellules de dimension élevée (volumes). Lors de chaque passe, les cellules qui doivent être isolées sont déterminées par la méthode protégée 'markCellsToBeIsolated'.

Parameters
AMarkNumberUn numéro de marque
ADeleteDartsUn booléen indiquant si la fusion doit se faire en supprimant des brins
Returns
Le nombre de fusions effectuées

Definition at line 367 of file gmg-merge.cc.

bool CGMapGeneric::intuitiveSew ( CDart ADart1,
CDart ADart2 
)

Essaie de coudre ADart1 et ADart2 en déterminant la dimension de la couture à l'aide de la méthode 'getSewDimension'.

Parameters
ADart1Un brin quelconque
ADart2Un brin quelconque
Returns
Un booléen indiquant si la couture alpha pu se faire

Definition at line 40 of file gmg-sew.cc.

int CGMapGeneric::intuitiveStopUpMarkedBorders ( int  AMarkNumber)

Bouche les bords incidents aux brins sélectionnés, en déterminant de manière automatique la dimension des bords.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de bords qui ont été bouchés

Definition at line 84 of file gmg-stop-up.cc.

int CGMapGeneric::intuitiveUnsewMarkedCells ( int  AMarkNumber)

Découd tous les brins de la carte marqués, en déterminant de manière automatique la dimension de chacune des décousures.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de décousures effectuées

Definition at line 43 of file gmg-unsew.cc.

bool CGMapGeneric::isClosedPolyline ( CDart ADart)

Teste si le brin ADart appartient à une polyligne dont tous les brins sont 0 et 1-cousus. Remarque: Certains brins de la polyligne peuvent être 2 ou 3-cousus.

Parameters
ADartUn brin de la carte
Returns
'vrai' si ADart appartient à une face fermée

Definition at line 39 of file gmg-polyline.cc.

bool CGMapGeneric::isConnex ( )

Teste si la carte ne contient qu'une seule composante connexe. Si c'est le cas, la valeur 'vrai' est retournée.

Returns
'vrai' si la carte est connexe

Definition at line 531 of file gmg-topology.cc.

bool CGMapGeneric::isDanglingFace ( CDart ADart)
Returns
true iff the face containing dart ADart is dangling.

Definition at line 719 of file gmg-topology.cc.

bool CGMapGeneric::isIClosedOrbit ( CDart ADart,
int  ADimension,
TOrbit  AOrbit 
)

Teste si tous les brins de l'orbite (ADart, AOrbit) sont cousus par alpha ADimension. Si c'est le cas, la méthode retourne vrai.

Parameters
ADartUn brin de la carte
ADimensionUne dimension quelconque (0, 1, 2 ou 3)
AOrbitUne orbite quelconque
Returns
Un booléen

Definition at line 668 of file gmg-topology.cc.

bool CGMapGeneric::isIFreeOrbit ( CDart ADart,
int  ADimension,
TOrbit  AOrbit 
)

Teste si tous les brins de l'orbite (ADart, AOrbit) sont non cousus par alpha ADimension. Si c'est le cas, la méthode retourne vrai.

Parameters
ADartUn brin de la carte
ADimensionUne dimension quelconque (0, 1, 2 ou 3)
AOrbitUne orbite quelconque
Returns
Un booléen

Definition at line 685 of file gmg-topology.cc.

bool CGMapGeneric::isIsolatedPolyline ( CDart ADart)

Teste si le brin ADart appartient à une polyligne isolée, c'est-à-dire si tous les brins de la face incidente à ADart sont 2 et 3-libres.

Parameters
ADartUn brin de la carte
Returns
'vrai' si ADart appartient à une polyligne

Definition at line 28 of file gmg-polyline.cc.

bool CGMapGeneric::isLocalDegreeTwoInf ( CDart ADart,
int  ACellDim 
)

Vérifie si la condition alpha_i-1 o alpha_i-2 est une involution pour chaque brin de la cellule.

Parameters
ADartUn brin de la carte
ACellDimUne dimension
Returns
vrai ssi la cellule de dimension ACellDim incidente à ADart est de "degré local inférieur" égal à 2.

0 <= ACellDim < 3 ADart!=NULL

Definition at line 90 of file gmg-degree.cc.

bool CGMapGeneric::isLocalDegreeTwoSup ( CDart ADart,
int  ACellDim 
)

Vérifie si la condition alpha_i+1 o alpha_i+2 est une involution pour chaque brin de la cellule.

Parameters
ADartUn brin de la carte
ACellDimUne dimension
Returns
vrai ssi la cellule de dimension ACellDim incidente à ADart est de "degré local supérieur" égal à 2.

0 <= ACellDim < 3 ADart!=NULL

Definition at line 63 of file gmg-degree.cc.

int CGMapGeneric::isolateMarkedCells ( int  AMarkNumber,
int  ADim,
bool  ADeleteDarts = false 
)

Isole lorsque cela est possible les cellules de dimension ADim en fusionnant entre elles les cellules de dimension ADim+1 qui leurs sont incidentes.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (0, 1 ou 2)
ADeleteDartsUn booléen indiquant si les cellules isolées doivent être détruites
Returns
Le nombre de cellules isolées

Definition at line 206 of file gmg-merge.cc.

int CGMapGeneric::isolateMarkedCells ( int  AMarkNumber,
int  ADim,
bool  ADeleteDarts,
bool  AVerif,
int  AMarkTreated = -1 
)
protected

Cette méthode auxiliaire isole (uniquement lorsque cela est possible si AVerif=='vrai') les cellules de dimension ADim dont un brin au moins est sélectionné, c'est-à-dire qu'elle fusionne les cellules de dimension ADim+1 incidentes aux cellules de dimension ADim marquées. Lorsqu'une cellule est isolée, elle est marquée comme traitée avec la marque AMarkTreated (si AMarkTreated>=0).

Si AVerif=='faux', les cellules marquées doivent impérativement pouvoir être isolées.

La méthode est utilisée par: isolateMarkedCells(int, int, bool), intuitiveIsolateMarkedCells(int, bool), mergeMarkedCells(int, int, bool) et intuitiveMergeMarkedCells(int, bool).

Parameters
AMarkNumberUn numéro de marque indiquant les brins sélectionnés
ADimLa dimension des cellules qui doivent être isolées
ADeleteDartsUn booléen indiquant si les cellules doivent être supprimées une fois isolées
AVerifUn booléen indiquant si pour chaque cellule marquée il faut vérifier si l'opération d'isolement est possible
AMarkTreatedUn numéro de marque indiquant (si positif ou nul) les brins déjà traités et dont il ne faut donc pas se préoccuper
Returns
Le nombre de cellules isolées

AMarkTreated!=AMarkNumber AVerif=='faux' ou toutes les cellules marquées peuvent être isolées

Definition at line 127 of file gmg-merge.cc.

bool CGMapGeneric::isOrientable ( CDart ADart,
TOrbit  AOrbit 
)

Teste si l'objet déterminé par ADart et AOrbit est orientable. Remarque: L'objet peut ne pas être orientable uniquement pour les orbites ORBIT_VERTEX, ORBIT_VOLUME et ORBIT_CC.

Parameters
ADartUn brin de la carte
AOrbitUne orbite (ORBIT_VOLUME ou ORBIT_CC)
Returns
'vrai' si l'objet est orientable

AOrbit n'est pas une orbite de bord

Definition at line 46 of file gmg-topology.cc.

bool CGMapGeneric::isWholeCellMarked ( CDart ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Teste si tous les brins de la cellule déterminée par le brin ADart et l'orbite AOrbit sont marqués avec la marque AMarkNumber.

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
Returns
Un booléen

Definition at line 382 of file gmg-selection.cc.

void CGMapGeneric::markAdd ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 272 of file gmg-selection.cc.

void CGMapGeneric::markAdd ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 283 of file gmg-selection.cc.

void CGMapGeneric::markAnd ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 298 of file gmg-selection.cc.

void CGMapGeneric::markAnd ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 309 of file gmg-selection.cc.

bool CGMapGeneric::markBorders ( int  AMarkNumber,
int  ADim 
)

Marque les bords de dimension ADim incidents aux brins sélectionnés.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (0, 1, 2 ou 3)
Returns
Un booléen indiquant si des bords ont été sélectionnés

Definition at line 39 of file gmg-border.cc.

bool CGMapGeneric::markBorders ( int  AMarkNumber)

Marque les bords incidents aux brins sélectionnés. La dimension des bord est automatiquement déterminée avec la méthode 'getBorderDimension'.

Parameters
AMarkNumberUn numéro de marque
Returns
Un booléen indiquant si des bords ont été sélectionnés

Definition at line 78 of file gmg-border.cc.

void CGMapGeneric::markCellsToBeExtrudedByNormal ( int  ADim,
int  AMarkNumberSrce,
int  AMarkNumberDest 
)
protectedvirtual

Marque entièrement les cellules de dimension ADim qui doivent être extrudées. Cette méthode ne fait rien d'autre qu'appeler 'markIncidentCells', mais elle peut être surchargée par les classes qui dérivent de CGMapGeneric pour ne marquer que la moitié des cellules à extruder, ceci afin de résoudre les problèmes d'orientation de l'extrusion dans le cadre de l'extrusion selon un vecteur normal.

Parameters
ADimUne dimension (0, 1 ou 2)
AMarkNumberSrceUn numéro de marque source
AMarkNumberDestUn numéro de marque destination

Reimplemented in GMap3d::CGMapVertex.

Definition at line 355 of file gmg-extrusion.cc.

void CGMapGeneric::markCellsToBeIsolated ( int  AMarkSource,
int  ADim,
int  AMarkDestination,
int  AMarkTreated = -1 
)
protected

Marque avec la marque AMarkDestination tous les brins de chaque cellule de dimension ADim qui peut être isolée (c'est-à-dire qui est ADim-cousue et de degré inférieur ou égal à 2) et qui est incidente à des cellules de dimension ADim+1 dont un brin au moins est marqué avec la marque AMarkSource. Voir le corps de la méthode pour plus de détail.

La méthode est utilisée par: mergeMarkedCells(int, int, bool) et intuitiveMergeMarkedCells(int, bool).

Parameters
AMarkSourceUn numéro de marque
ADimUne dimension (celle des cellules à isoler)
AMarkDestinationUn numéro de marque
AMarkTreatedUn numéro de marque indiquant (si positif ou nul) les brins déjà traités, et dont il ne faut donc pas se préoccuper

Aucun brin n'est marqué avec la marque AMarkDestination 0 <= ADim <= 2

Definition at line 230 of file gmg-merge.cc.

void CGMapGeneric::markCopy ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo sur le même état que la marque AMarkNumberFrom.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 258 of file gmg-selection.cc.

void CGMapGeneric::markCopy ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo sur le même état que la marque AMarkNumberFrom.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 250 of file gmg-selection.cc.

int CGMapGeneric::markIncidentCells ( TOrbit  AOrbit,
int  AMarkNumberSrce,
int  AMarkNumberDest 
)

Marque avec la marque AMarkNumberDest toutes les cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué avec la marque AMarkNumberSrce.

Parameters
AOrbitUne orbite quelconque
AMarkNumberSrceUn numéro de marque
AMarkNumberDestUn numéro de marque
Returns
Le nombre de cellules marquées

AMarkNumberSrce!=AMarkNumberDest

Definition at line 107 of file gmg-selection.cc.

int CGMapGeneric::markIncidentCells ( TOrbit  AOrbit,
int  AMarkNumber 
)

Marque entièrement les cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué.

Parameters
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
Returns
Le nombre de cellules marquées

Definition at line 136 of file gmg-selection.cc.

void CGMapGeneric::markInterior ( CDart ADart,
int  ADimension,
int  AMarkBorder,
int  AMarkInterior = -1 
)

Marque tous les brins de la carte qui sont à l'intérieur d'une région dont le bord est donné par les brins marqués avec la marque AMarkBorder. ADart est un brin situé à l'intérieur de la région. Les brins sont marqués avec la marque AMarkInterior. Les brins du bord ne sont pas marqués.

Parameters
ADartUn brin de la carte
ADimensionUne dimension (2 ou 3)
AMarkBorderUn numéro de marque
AMarkInteriorUn numéro de marque

Definition at line 183 of file gmg-selection.cc.

void CGMapGeneric::markIntersection ( int  AMarkNumber1,
int  AMarkNumber2,
TOrbit  AOrbit1,
TOrbit  AOrbit2,
int  AMarkResult,
bool  AInitialMarkIncidentCells = false 
)

Cette méthode permet de sélectionner une partie du bord d'une cellule en calculant l'intersection entre cette cellule et une autre qui lui est adjacente.

Parameters
AMarkNumber1un numéro de marque
AMarkNumber2un numéro de marque différent de AMarkNumber1
AOrbit1une orbite quelconque (orbite de sélection)
AOrbit2une orbite quelconque (orbite du résultat)
AMarkResultla marque où est stocké le résultat
AInitialMarkIncidentCellsun booléen indiquant s'il faut initialiser les marquages

Definition at line 219 of file gmg-selection.cc.

void CGMapGeneric::markMove ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai, puis positionne la marque AMarkNumberFrom à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 350 of file gmg-selection.cc.

void CGMapGeneric::markMove ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai, puis positionne la marque AMarkNumberFrom à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 364 of file gmg-selection.cc.

unsigned int CGMapGeneric::markOrbit ( CDart ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Marque tous les brins de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber.

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque
Returns
the number of marked darts

Definition at line 28 of file gmg-selection.cc.

int CGMapGeneric::markRealFace ( CDart ADart,
int  AMark,
int  AMark2 
)
Parameters
ADartUn brin de la carte qui doit appartenir à une arête non fictive
AMarkla marque pour les arêtes fictives
AMark2la marque dont on veut marquer les faces réelles
Returns
le nombre de brins marqués

Marque avec AMark2 la face réelle incidente à ADart (cad la face obtenue en sautant les arêtes fictives)

Definition at line 225 of file gmg-fictive-edge.cc.

void CGMapGeneric::markSub ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 324 of file gmg-selection.cc.

void CGMapGeneric::markSub ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

Definition at line 335 of file gmg-selection.cc.

void CGMapGeneric::merge ( CDart ADart1,
CDart ADart2,
int  ADim,
bool  ADeleteDarts = false 
)

Fusionne les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2.

Parameters
ADart1Un pointeur sur un premier brin
ADart2Un pointeur sur un deuxième brin
ADimUne dimension
ADeleteDartsUn booléen indiquant s'il faut supprimer les brins correspondant à la cellule de dimension ADim-1 située entre les cellules de dimension ADim incidentes à ADart1 et ADart2

canMerge(ADart1, ADart2, ADim)

Definition at line 89 of file gmg-merge.cc.

int CGMapGeneric::mergeMarkedCells ( int  AMarkNumber,
int  ADim,
bool  ADeleteDarts = false 
)

Fusionne lorsque cela est possible (avec leur cellule incidente) les cellules dont un brin au moins est marqué. Les cellules de dimension ADim-1 qui doivent être isolées sont déterminées par la méthode protégée 'markCellsToBeIsolated'.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (1, 2 ou 3)
ADeleteDartsUn booléen indiquant si la fusion doit se faire en supprimant des brins
Returns
Le nombre de fusions effectuées

Definition at line 348 of file gmg-merge.cc.

void CGMapGeneric::mergeUnionFindTrees ( CDart ADart1,
CDart ADart2,
int  AIndex 
)

Merge the two uf-trees containing ADart1 and ADart2.

Parameters
ADart1the dart of a first uf-tree.
ADart2the dart of a second uf-tree.
AIndexthe direct info index to use.
Todo:
we can improve this by counting the size of the tree and putting the small one under the big one.

Definition at line 282 of file gmg-direct-info.cc.

int CGMapGeneric::multiSew ( CDart ADart1,
int  AMarkNumber1,
CDart ADart2,
int  ADimension 
)

Essaie de coudre par alpha-ADimension des cellules de dimension ADimension, à partir des brins ADart1 et ADart2. Le bord de dimension ADimension incident à chaque brin de départ est parcouru en parallèle en se limitant du premier côté à la région délimitée par la marque.

Parameters
ADart1Un brin de la carte
AMarkNumber1Un numéro de marque
ADart2Un brin de la carte
ADimensionUne dimension de couture (2 ou 3)
Returns
Le nombre de coutures qui ont été effectuées

Definition at line 52 of file gmg-sew.cc.

CDart * CGMapGeneric::prolongPolyline ( CDart ADart)

Prolonge une polyligne (en rajoutant une arête à son bout). Si ADart vaut NULL, crée un premier brin d'une nouvelle polyligne.

Parameters
ADartUn brin constituant le bout d'une polyligne existante
Returns
Le nouveau bout de la polyligne

isIsolatedPolyline(CDart)

Definition at line 99 of file gmg-polyline.cc.

CDart * CGMapGeneric::quadrangulateFace ( CDart ADart,
bool  AInsertVertices = true 
)
virtual

Quadrangule la face incidente à ADart.

Si AInsertVertices vaut 'vrai', un sommet est inséré sur chaque arête de la face avant d'effectuer la quadrangulation.

Si AInsertVertices vaut 'faux', la quadrangulation est directement effectuée. Dans ce cas, il faut que le nombre d'arêtes qui composent la face soit pair. Un sommet sur deux de la face est modifié. Celui incident à ADart ne l'est pas. Si la face est ouverte, selon la position de ADart sur celle-ci, les arêtes qui sont au bout de la polyligne seront ou non sur une face ouverte.

Parameters
ADartUn brin de la carte
AInsertVerticesUn booléen indiquant s'il faut insérer des sommets sur les arêtes de la face avant d'effectuer la quadrangulation
Returns
Un brin du sommet topologique créé

Reimplemented in GMap3d::CGMapVertex.

Definition at line 35 of file gmg-quadrangulation.cc.

int CGMapGeneric::quadrangulateMarkedFaces ( int  AMarkNumber,
bool  AInsertVertices = true 
)

Quadrangule les faces dont un brin au moins est marqué. Pour plus d'informations sur le paramètre AInsertVertices, se reporter à la méthode 'quadrangulateFace'.

Parameters
AMarkNumberUn numéro de marque
AInsertVerticesUn booléen indiquant s'il faut insérer des sommets sur les arêtes des faces avant d'effectuer la quadrangulation
Returns
Le nombre de quadrangulations effectuées

Definition at line 131 of file gmg-quadrangulation.cc.

void CGMapGeneric::remove ( CDart ADart,
int  ADim,
bool  ADeleteDarts = false 
)

Supprime la cellule de dimension ADim désignées par le brin ADart.

Parameters
ADartUn pointeur sur brin
ADimUne dimension
ADeleteDartsUn booléen indiquant s'il faut supprimer les brins correspondant à la cellule supprimée.

canRemove(ADart, ADim)

Definition at line 53 of file gmg-removal.cc.

int CGMapGeneric::removeDanglingEdges ( )

Supprime toutes les arêtes pendantes de la carte.

Returns
Le nombre d'arêtes pendantes détruites.

Definition at line 120 of file gmg-simplification.cc.

int CGMapGeneric::removeMarkedCells ( int  AMarkNumber,
int  ADim,
bool  ADeleteDarts = false 
)

Supprime lorsque cela est possible les cellules dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (0, 1 ou 2)
ADeleteDartsUn booléen indiquant si la suppression doit se faire en supprimant des brins
Returns
Le nombre de suppressions effectuées

Definition at line 103 of file gmg-removal.cc.

int CGMapGeneric::removeMarkedDanglingEdges ( int  AMarkNumber)

Supprime toutes les arêtes pendantes dont un brin au moins est marqué.

Returns
Le nombre d'arêtes pendantes détruites.

Definition at line 60 of file gmg-simplification.cc.

int CGMapGeneric::removeMarkedEdgesWithoutDisconnection ( int  AMarkNumber)

Supprime lorsque cela est possible les arêtes dont un brin au moins est marqué, tout en évitant les déconnexions, sans se préoccuper des faces fictives éventuelles.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de suppressions effectuées

Definition at line 331 of file gmg-removal.cc.

int CGMapGeneric::removeMarkedEdgesWithoutDisconnectionForSurface ( int  AMarkNumber)

Supprime lorsque cela est possible les arêtes dont un brin au moins est marqué, tout en évitant les déconnexions. Marche uniquement pour une surface (tout les brins 3-libres)

Definition at line 236 of file gmg-removal.cc.

int CGMapGeneric::removeMarkedEdgesWithoutDisconnectionWithFaceShifting ( int  AMarkNumber)

Supprime lorsque cela est possible les arêtes dont un brin au moins est marqué, tout en évitant les déconnexions. Marche pour une surface avec des faces fictives, en décalant les faces fictives pour obtenir l'objet minimal. TODO vérifier ? ATTENTION : Pour le moment, version en O(n²) avec n nombre d'arêtes... TODO : Améliorer la complexité (par exemple avec des arbre union-find, mais aussi en décallant les arêtes fictives ?)

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de suppressions effectuées

Definition at line 410 of file gmg-removal.cc.

int CGMapGeneric::removeMarkedFacesButKeepBalls ( int  AMarkNumber)

Supprime lorsque cela est possible les faces dont un brin au moins est marqué, tout en évitant de créer des volumes non homéomorphes à des boules. A la fin, démarque tout, sauf les arêtes de degré supérieur à 2. ATTENTION : Pour le moment, version en O(n²) avec n nombre de faces... TODO : Améliorer la complexité (par exemple avec des arbre union-find, mais aussi en décallant les faces fictives ?)

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de suppressions effectuées

Definition at line 572 of file gmg-removal.cc.

int CGMapGeneric::removeMarkedVerticesWithFictiveEdgeShifting ( int  AMarkNumber)

Supprime lorsque cela est possible les sommets dont un brin au moins est marqué, tout en décallant les arêtes fictives.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre de suppressions effectuées

Definition at line 162 of file gmg-removal.cc.

void CGMapGeneric::saveAlphaInDirectInfo ( int  AAlphaIndex,
int  ADirectInfoIndex 
)

Pour chaque brin b de la carte, copie la valeur de l'image par alpha AAlphaIndex de b dans son champ direcInfo d'indice ADirectInfoIndex.

Remarque: La méthode 'getDirectInfoAsDart' permet de récupérer aisément les valeurs sauvées.

Parameters
AAlphaIndexUne dimension (0, 1, 2 ou 3)
ADirectInfoIndexUn indice de champ directInfo

Definition at line 133 of file gmg-direct-info.cc.

void CGMapGeneric::sewDuplicatedDarts ( CCoverage ACoverage,
int  AMarkNumber,
int  ADirectInfoIndex,
CGMapGeneric AMap,
bool  A0Sew = true,
bool  A1Sew = true,
bool  A2Sew = true,
bool  A3Sew = true 
)
protected

Coud les brins dupliqués entre eux. Les brins traités sont ceux parcourus qui sont marqués avec la marque AMarkNumber.

Parameters
ACoverageUn itérateur quelconque
AMarkNumberUn numéro de marque
ADirectInfoIndexUn indice de champ directInfo
AMapLa carte dans laquelle créer la copie
A-SewDes booléens indiquant quelles coutures doivent être traitées

Definition at line 136 of file gmg-duplication.cc.

void CGMapGeneric::shiftAllAdjacentFictiveEdges ( CDart ADart,
int  AMark 
)

Definition at line 70 of file gmg-fictive-edge.cc.

unsigned int CGMapGeneric::shiftAllEdgesIncidentToVertex ( CDart ADart)

Definition at line 53 of file gmg-fictive-edge.cc.

void CGMapGeneric::shiftAllFictiveEdges ( CDart ADart,
int  AMark 
)

Definition at line 84 of file gmg-fictive-edge.cc.

void CGMapGeneric::shiftAllFictiveEdgesAroundEdge ( CDart ADart,
int  AMark 
)

Definition at line 91 of file gmg-fictive-edge.cc.

void CGMapGeneric::shiftAllFictiveFaces ( CDart ADart,
int  AFictiveFaceMark,
int  ADeleteMark 
)

Definition at line 206 of file gmg-fictive-face.cc.

void CGMapGeneric::shiftOneFictiveEdge ( CDart ADart,
CDart ADart2 
)
virtual

Definition at line 29 of file gmg-fictive-edge.cc.

void CGMapGeneric::shiftOneFictiveFace ( CDart ADart,
int  AFictiveFaceMark,
int  ADeleteMark 
)
virtual

Definition at line 73 of file gmg-fictive-face.cc.

void CGMapGeneric::shiftOneFictiveFaceAlongDanglingEdge ( CDart ADart,
int  AFictiveFaceMark,
int  ADeleteMark 
)
virtual

Definition at line 29 of file gmg-fictive-face.cc.

CDart * CGMapGeneric::shortenPolyline ( CDart ADart)

Détruit la dernière arête (dont le brin 0-libre est donné par ADart) d'une polyligne.

Parameters
ADartLe bout d'une polyligne
Returns
Le nouveau bout de la polyligne

isIsolatedPolyline(ADart)

Definition at line 126 of file gmg-polyline.cc.

void CGMapGeneric::stopUp ( CDart ADart,
int  ADim 
)
virtual

Bouche le bord de dimension ADim incident au brin ADart avec une cellule de dimension ADart. La fonction est virtuelle afin de pouvoir être surchargée pour gérer les problèmes de plongement. Par exemple, dans le cas de sommets plongés le bouchage d'un 0-bord entraîne la création d'un nouveau sommet topologique.

Parameters
ADartUn brin quelconque d'un bord de dimension ADim
ADimUne dimension

Reimplemented in GMap3d::CGMapVertex.

Definition at line 28 of file gmg-stop-up.cc.

int CGMapGeneric::stopUpMarkedBorders ( int  AMarkNumber,
int  ADim 
)

Bouche les bords de dimension ADim incident aux brins sélectionnés.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension
Returns
Le nombre de bords qui ont été bouchés

Definition at line 68 of file gmg-stop-up.cc.

int CGMapGeneric::thickenMarkedDarts ( int  AMarkNumber,
int  ADirectInfoIndex1,
int  ADirectInfoIndex2 
)
virtual

Épaissit les brins marqués avec la marque AMarkNumber. Chaque brin marqué est dupliqué deux fois et ses champs directInfo[ADirectInfoIndex1] et directInfo[ADirectInfoIndex2] pointent vers les brins dupliqués (ceci afin que les classes descendant de CGMapGeneric puissent effectuer la mise à jour des plongements).

Remarque: À l'issue de la méthode, pour chaque brin B marqué avec la marque AMarkNumber on alpha aussi:

B->getDirectInfo(ADirectInfoIndex1) ->getDirectInfo(ADirectInfoIndex1) = B

B->getDirectInfo(ADirectInfoIndex1) ->getDirectInfo(ADirectInfoIndex2) = NULL

B->getDirectInfo(ADirectInfoIndex2) ->getDirectInfo(ADirectInfoIndex1) = NULL

B->getDirectInfo(ADirectInfoIndex2) ->getDirectInfo(ADirectInfoIndex2) = B

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndex1Un premier indice de champ directInfo à utiliser
ADirectInfoIndex2Un second indice de champ directInfo à utiliser
Returns
Le nombre de brins épaissis

Si i est une dimension (0, 1, 2 ou 3), si b est un brin i-cousu et si b et alpha(b,i) sont marqués, on alpha: alpha(b->getDirectInfo(ADirectInfoIndex1), i) = alpha(b, i)->getDirectInfo(ADirectInfoIndex2)

Definition at line 31 of file gmg-thickening.cc.

CDart * CGMapGeneric::topoExtrude ( CDart ADart,
int  ADim,
bool  AExtrusionWithAdjacentSews,
int  AMarkExtruded = -1,
int  ADirectInfoIndex = -1 
)

Extrude la cellule de dimension ADim incidente à ADart.

Si AMarkExtruded est positif ou nul et si la méthode 'getExtrusionWithAdacentSews' renvoie la valeur 'vrai', la cellule extrudée est cousue aux cellules adjacentes déjà extrudées. Si ADirectInfoIndex est positif ou nul, les cellules adjacentes sont déterminées à partir du champ directInfo correspondant (ce champ mémorise simplement l'image par alpha-ADim de chaque brin). Ceci est particulièrement utile pour la méthode 'extrudeByPath' lorsque le chemin est fermé ou lorsque le brin initial est au milieu du chemin. En effet, dans ce cas là les cellules sont isolées avant extrusion d'où l'impossibilité de retrouver les cellules adjacentes qui ont déjà été extrudées (voir la méthode 'extrudeByPath' pour plus d'informations).

Ces cellules de dimension ADim+1 peuvent facilement être repérées car les cellules de dimension ADim à partir desquelles on les alpha obtenues sont marquées avec la marque AMarkExtruded.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
AExtrusionWithAdjacentSewsUn booléen pour indiquer comment doit s'effectuer l'extrusion. Si vrai', les cellules adjacentes extrudées en parallèle sont cousues entre elles, sinon elles ne sont pas cousues entre elles
AMarkExtrudedUn numéro de marque
ADirectInfoIndexUn indice de champ directInfo
Returns
Un brin de la cellule créée, situé à l'opposé de ADart

canExtrudeCell(ADart, ADim)

Definition at line 85 of file gmg-extrusion.cc.

CDart * CGMapGeneric::triangulate ( CDart ADart,
int  ADim 
)

Triangule la cellule de dimension ADim incidente à ADart.

Parameters
ADartUn brin de la carte
Returns
Un brin du sommet topologique créé

ADim>1 et ADim<=3

Definition at line 132 of file gmg-triangulation.cc.

CDart * CGMapGeneric::triangulateEdge ( CDart ADart)
virtual

Triangule l'arête incidente à ADart (la "coupe" en deux).

Parameters
ADartUn brin de la carte
Returns
Un brin du sommet topologique créé

Reimplemented in GMap3d::CGMapVertex.

Definition at line 28 of file gmg-triangulation.cc.

CDart * CGMapGeneric::triangulateFace ( CDart ADart)
virtual

Triangule la face incidente à ADart.

Parameters
ADartUn brin de la carte
Returns
Un brin du sommet topologique créé

Reimplemented in GMap3d::CGMapVertex.

Definition at line 35 of file gmg-triangulation.cc.

int CGMapGeneric::triangulateMarkedCells ( int  AMarkNumber,
int  ADim 
)

Triangule les cellules de dimension ADim dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension (1, 2 ou 3)
Returns
Le nombre de triangulations effectuées

Definition at line 147 of file gmg-triangulation.cc.

CDart * CGMapGeneric::triangulateVolume ( CDart ADart)
virtual

Triangule le volume incident à ADart.

Parameters
ADartUn brin de la carte
Returns
Un brin du sommet topologique créé

Reimplemented in GMap3d::CGMapVertex.

Definition at line 85 of file gmg-triangulation.cc.

bool CGMapGeneric::turnAroundVertex ( CDart ADart,
bool  ANoCrossedVolume,
int  AMarkNumber,
CDart *&  ANext,
bool &  ACrossed 
)
protected

Cette méthode est utilisée par les méthodes 'canInsertFace' et 'insertFace'. Elle permet de se déplacer le long des arêtes marquées d'une volume. Partant d'un brin donné elle tourne autour d'un sommet (orbite 12) jusqu'à trouver s'il existe un brin marqué d'une autre arête que celle sur laquelle se trouve ADart. Les deux derniers paramètres sont des paramètres en sortie.

Parameters
ADartUn brin de la carte, par lequel on est arrivé sur ce sommet
ANoCrossedVolumeUn booléen indiquant si l'insertion de face doit ne pas entraîner l'apparition d'un volume croisé (voir la méthode 'insertFace')
AMarkNumberUn numéro de marque permettant de repérer les brins sélectionnés
ANextUn pointeur sur un brin (paramètre en sortie uniquement)
ACrossedUn booléen indiquant si le brin ANext est tel que la face à insérer est croisée (paramètre en sortie uniquement)
Returns
Un booléen indiquant si le sommet est valide, c'est-à-dire si au plus de 2 des arêtes qui lui sont incidentes sont sélectionnées

Definition at line 236 of file gmg-insertion.cc.

void CGMapGeneric::unmarkAll ( int  AMarkNumber)

Démarque tous les brins de la carte pour la marque numéro AMarkNumber.

Parameters
AMarkNumberUn numéro de marque

Definition at line 99 of file gmg-selection.cc.

void CGMapGeneric::unmarkOrbit ( CDart ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Démarque tous les brins de l'orbite AOrbit incidente à ADart pour la marque numéro AMarkNumber.

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque

Definition at line 86 of file gmg-selection.cc.

int CGMapGeneric::unmarkRealFace ( CDart ADart,
int  AMark,
int  AMark2 
)
Parameters
ADartUn brin de la carte qui doit appartenir à une arête non fictive
AMarkla marque pour les arêtes fictives
AMark2la marque dont on veut démarquer les faces réelles
Returns
le nombre de brins démarqués

Démarque avec AMark2 la face réelle incidente à ADart (cad la face obtenue en sautant les arêtes fictives)

Definition at line 241 of file gmg-fictive-edge.cc.

int CGMapGeneric::unsewMarkedCells ( int  AMarkNumber,
int  ADim 
)

Découd selon la dimension ADim tous les brins de la cartes marqués avec la marque numéro AMarkNumber.

Parameters
AMarkNumberUn numéro de marque
ADimUne dimension
Returns
Le nombre de décousures effectuées

Definition at line 28 of file gmg-unsew.cc.


The documentation for this class was generated from the following files: