Moka kernel
|
#include <g-map-generic.hh>
Public Member Functions | |
CGMapGeneric () | |
virtual | ~CGMapGeneric () |
CDart * | alpha01 (CDart *ADart) const |
CDart * | alpha010 (CDart *ADart) const |
CDart * | alpha0101 (CDart *ADart) const |
CDart * | alpha0101210 (CDart *ADart) const |
CDart * | alpha01010 (CDart *ADart) const |
CDart * | alpha01021 (CDart *ADart) const |
CDart * | alpha0102101 (CDart *ADart) const |
CDart * | alpha010212 (CDart *ADart) const |
CDart * | alpha012 (CDart *ADart) const |
CDart * | alpha0121 (CDart *ADart) const |
CDart * | alpha0123 (CDart *ADart) const |
CDart * | alpha012321 (CDart *ADart) const |
CDart * | alpha02 (CDart *ADart) const |
CDart * | alpha020 (CDart *ADart) const |
CDart * | alpha021 (CDart *ADart) const |
CDart * | alpha0210 (CDart *ADart) const |
CDart * | alpha02101 (CDart *ADart) const |
CDart * | alpha02121 (CDart *ADart) const |
CDart * | alpha023 (CDart *ADart) const |
CDart * | alpha03 (CDart *ADart) const |
CDart * | alpha030 (CDart *ADart) const |
CDart * | alpha10 (CDart *ADart) const |
CDart * | alpha101 (CDart *ADart) const |
CDart * | alpha1010 (CDart *ADart) const |
CDart * | alpha10101 (CDart *ADart) const |
CDart * | alpha1010101 (CDart *ADart) const |
CDart * | alpha1012 (CDart *ADart) const |
CDart * | alpha10121 (CDart *ADart) const |
CDart * | alpha101201 (CDart *ADart) const |
CDart * | alpha1012101 (CDart *ADart) const |
CDart * | alpha101232 (CDart *ADart) const |
CDart * | alpha102 (CDart *ADart) const |
CDart * | alpha1021 (CDart *ADart) const |
CDart * | alpha12 (CDart *ADart) const |
CDart * | alpha121 (CDart *ADart) const |
CDart * | alpha1210 (CDart *ADart) const |
CDart * | alpha12101 (CDart *ADart) const |
CDart * | alpha1212 (CDart *ADart) const |
CDart * | alpha123 (CDart *ADart) const |
CDart * | alpha1232 (CDart *ADart) const |
CDart * | alpha12321 (CDart *ADart) const |
CDart * | alpha123210 (CDart *ADart) const |
CDart * | alpha13 (CDart *ADart) const |
CDart * | alpha20 (CDart *ADart) const |
CDart * | alpha201 (CDart *ADart) const |
CDart * | alpha21 (CDart *ADart) const |
CDart * | alpha210 (CDart *ADart) const |
CDart * | alpha2101 (CDart *ADart) const |
CDart * | alpha21012 (CDart *ADart) const |
CDart * | alpha210123 (CDart *ADart) const |
CDart * | alpha212 (CDart *ADart) const |
CDart * | alpha2121 (CDart *ADart) const |
CDart * | alpha23 (CDart *ADart) const |
CDart * | alpha231 (CDart *ADart) const |
CDart * | alpha2310 (CDart *ADart) const |
CDart * | alpha232 (CDart *ADart) const |
CDart * | alpha2321 (CDart *ADart) const |
CDart * | alpha232101 (CDart *ADart) const |
CDart * | alpha30 (CDart *ADart) const |
CDart * | alpha301 (CDart *ADart) const |
CDart * | alpha3012 (CDart *ADart) const |
CDart * | alpha30120 (CDart *ADart) const |
CDart * | alpha302 (CDart *ADart) const |
CDart * | alpha31 (CDart *ADart) const |
CDart * | alpha312 (CDart *ADart) const |
CDart * | alpha32 (CDart *ADart) const |
CDart * | alpha3201 (CDart *ADart) const |
CDart * | alpha321 (CDart *ADart) const |
CDart * | alpha321012 (CDart *ADart) const |
CDart * | alpha323 (CDart *ADart) const |
CDart * | getDirectInfoAsDart (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) |
CDart * | findUnionFindTrees (CDart *ADart, int AIndex) |
void | mergeUnionFindTrees (CDart *ADart1, CDart *ADart2, int AIndex) |
CDart * | createTopoTriangle () |
CDart * | createTopoSquare () |
CDart * | createTopoPolygon (int An) |
CDart * | createTopoOpenedPole (int An) |
CDart * | createTopoPole (int An) |
void | createTopoTube (int AMeridians, int AParallels, CDart **ABorder1, CDart **ABorder2) |
CDart * | createTopoTube (int AMeridians, int AParallels) |
void | createTopoSphere (int AMeridians, int AParallels, CDart **ASouthPole, CDart **ANorthPole) |
CDart * | createTopoSphere (int AMeridians, int AParallels) |
void | createTopoCylinder (int AMeridians, int AParallels, CDart **ABorder1, CDart **ABorder2, bool AClose1=true, bool AClose2=true) |
CDart * | createTopoCylinder (int AMeridians, int AParallels, bool AClose1=true, bool AClose2=true) |
void | createTopoPyramid (int AMeridians, int AParallels, CDart **ABaseDart, CDart **APoleDart, bool ACloseBase=true) |
CDart * | createTopoPyramid (int AMeridians, int AParallels, bool ACloseBase=true) |
void | createTopoTorus (int AMeridians, int AParallels, CDart **AEquator) |
CDart * | createTopoTorus (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) |
CDart * | createTopoMesh1 (int ASx, CDart *AModel=NULL) |
void | createTopoMesh2 (int ASx, int ASy, CDart *AMesh2Corners[2][2], bool A3Sewed=false) |
CDart * | createTopoMesh2 (int ASx, int ASy, bool A3Sewed=false) |
void | createTopoMesh3 (int ASx, int ASy, int ASz, CDart *AMesh3Corners[2][2][2]) |
CDart * | createTopoMesh3 (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) |
CDart * | prolongPolyline (CDart *ADart) |
CDart * | shortenPolyline (CDart *ADart) |
CDart * | closePolyline (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 CDart * | triangulateEdge (CDart *ADart) |
virtual CDart * | triangulateFace (CDart *ADart) |
virtual CDart * | triangulateVolume (CDart *ADart) |
CDart * | triangulate (CDart *ADart, int ADim) |
int | triangulateMarkedCells (int AMarkNumber, int ADim) |
bool | canQuadrangulateFace (CDart *ADart, bool AInsertVertices=true) |
virtual CDart * | quadrangulateFace (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) |
CDart * | findIncidentEdgeNonLoop (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) |
CCoverage * | getDynamicCoverage (const CDart *ADart, TOrbit AOrbit) |
CCoverage * | getStaticCoverage (const CDart *ADart, TOrbit AOrbit) |
CCoverage * | getMultiDynamicCoverage (const CDart *ADart, TOrbit AOrbit) |
CCoverage * | getBasicDynamicCoverage (const CDart *ADart, TOrbit AOrbit, int AMarkNumber) |
CAttribute * | getAttribute (const CDart *ADart, TOrbit, TAttributeId) |
void | addAttribute (CDart *ADart, TOrbit, CAttribute *) |
CAttribute * | removeAttribute (CDart *ADart, TOrbit, TAttributeId) |
void | deleteAttribute (CDart *ADart, TOrbit, TAttributeId) |
bool | isSameOrbit (CDart *ADart1, CDart *ADart2, TOrbit AOrbit) |
CDart * | getEmbeddingOwner (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 |
CDart * | alpha (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) |
CDart * | getFirstDart () 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_MARKS > | getMarks (CDart *ADart) const |
bool | isOrbitUsed (TOrbit AOrbit) const |
void | setOrbitUsed (TOrbit AOrbit) |
void | unsetOrbitUsed (TOrbit AOrbit) |
bool | isOrbitUsed (CDart *ADart, TOrbit AOrbit) const |
virtual CDart * | newDart () |
virtual void | delDart (CDart *ADart) |
CDart * | addMapDart () |
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 |
CDart * | alpha0 (const CDart *ADart) const |
CDart * | alpha1 (const CDart *ADart) const |
CDart * | alpha2 (const CDart *ADart) const |
CDart * | alpha3 (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) |
CDart * | go (TMovement ADirection, CDart *ALastDart, TOrbit AOrbit, int AMarkNumber, bool ASelect=true) |
CDart * | goAsFarAsPossible (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) |
CDart * | duplicateDarts (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 CDart * | insertVertex (CDart *ADart) |
int | insertVertexOnMarkedEdges (int AMarkNumber) |
virtual CDart * | insertEdge (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 CDart * | insertFace (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) |
CDart * | topoExtrude (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1) |
virtual CDart * | extrudeByNormal (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 CDart * | extrudeByPath (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 CDart * | createRevolutionPath (bool AClosed, int ANbEdges) |
void | destroyRevolutionPath (CDart *ADart) |
virtual CDart * | extrudeByRevolution (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 | |
CDart * | FFirstDart |
Premier brin de la liste des brins de la carte. | |
std::bitset< NB_MARKS > | FUsedMarks |
Tableau indiquant quelles sont les marques prises. | |
std::bitset< NB_MARKS > | FMaskMarks |
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_INFO > | FUsedDirectInfo |
Tableau indiquant quels sont les champs direct-info utilisés. | |
int | FDirectInfos [NB_DIRECT_INFO] |
Liste des champs directInfo libres. | |
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.
Definition at line 46 of file g-map-generic.hh.
Les différents mouvements que supporte la méthode 'go'.
Definition at line 34 of file g-map-generic.hh.
CGMapGeneric::CGMapGeneric | ( | ) |
Constructeur par défaut Construction d'une nouvelle instance de la classe. La g-carte créée est vide.
Definition at line 28 of file gmg-instance.cc.
|
virtual |
Destructeur Tous les brins de la carte ainsi que leurs plongements sont détruits.
Definition at line 33 of file gmg-instance.cc.
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é.
AMarkNumber | Un numéro de marque |
ADirectInfoIndex | L'indice du champ directInfo à utiliser |
ABytes | Le nombre d'octets à allouer |
AOrbitUsed | Une 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).
ADart | Un brin quelconque de la carte |
AOrbit | Une orbite |
ADirectInfoIndex | L'indice du champ directInfo à utiliser |
ABytes | Le nombre d'octets à allouer |
AOrbitUsed | Une orbite quelconque |
Definition at line 67 of file gmg-direct-info.cc.
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))).
ADart | Un pointeur sur un brin quelconque |
Definition at line 35 of file gmg-inline.icc.
Definition at line 41 of file gmg-inline.icc.
Definition at line 47 of file gmg-inline.icc.
Definition at line 59 of file gmg-inline.icc.
Definition at line 53 of file gmg-inline.icc.
Definition at line 65 of file gmg-inline.icc.
Definition at line 71 of file gmg-inline.icc.
Definition at line 77 of file gmg-inline.icc.
Definition at line 83 of file gmg-inline.icc.
Definition at line 95 of file gmg-inline.icc.
Definition at line 89 of file gmg-inline.icc.
Definition at line 101 of file gmg-inline.icc.
Definition at line 107 of file gmg-inline.icc.
Definition at line 113 of file gmg-inline.icc.
Definition at line 119 of file gmg-inline.icc.
Definition at line 125 of file gmg-inline.icc.
Definition at line 131 of file gmg-inline.icc.
Definition at line 137 of file gmg-inline.icc.
Definition at line 143 of file gmg-inline.icc.
Definition at line 149 of file gmg-inline.icc.
Definition at line 155 of file gmg-inline.icc.
Definition at line 161 of file gmg-inline.icc.
Definition at line 167 of file gmg-inline.icc.
Definition at line 173 of file gmg-inline.icc.
Definition at line 179 of file gmg-inline.icc.
Definition at line 185 of file gmg-inline.icc.
Definition at line 191 of file gmg-inline.icc.
Definition at line 209 of file gmg-inline.icc.
Definition at line 203 of file gmg-inline.icc.
Definition at line 197 of file gmg-inline.icc.
Definition at line 215 of file gmg-inline.icc.
Definition at line 221 of file gmg-inline.icc.
Definition at line 227 of file gmg-inline.icc.
Definition at line 233 of file gmg-inline.icc.
Definition at line 239 of file gmg-inline.icc.
Definition at line 245 of file gmg-inline.icc.
Definition at line 251 of file gmg-inline.icc.
Definition at line 257 of file gmg-inline.icc.
Definition at line 263 of file gmg-inline.icc.
Definition at line 269 of file gmg-inline.icc.
Definition at line 275 of file gmg-inline.icc.
Definition at line 281 of file gmg-inline.icc.
Definition at line 287 of file gmg-inline.icc.
Definition at line 293 of file gmg-inline.icc.
Definition at line 299 of file gmg-inline.icc.
Definition at line 305 of file gmg-inline.icc.
Definition at line 311 of file gmg-inline.icc.
Definition at line 317 of file gmg-inline.icc.
Definition at line 323 of file gmg-inline.icc.
Definition at line 329 of file gmg-inline.icc.
Definition at line 335 of file gmg-inline.icc.
Definition at line 341 of file gmg-inline.icc.
Definition at line 347 of file gmg-inline.icc.
Definition at line 353 of file gmg-inline.icc.
Definition at line 359 of file gmg-inline.icc.
Definition at line 365 of file gmg-inline.icc.
Definition at line 371 of file gmg-inline.icc.
Definition at line 377 of file gmg-inline.icc.
Definition at line 383 of file gmg-inline.icc.
Definition at line 389 of file gmg-inline.icc.
Definition at line 395 of file gmg-inline.icc.
Definition at line 401 of file gmg-inline.icc.
Definition at line 407 of file gmg-inline.icc.
Definition at line 413 of file gmg-inline.icc.
Definition at line 419 of file gmg-inline.icc.
Definition at line 425 of file gmg-inline.icc.
Definition at line 431 of file gmg-inline.icc.
Definition at line 437 of file gmg-inline.icc.
Definition at line 449 of file gmg-inline.icc.
Definition at line 443 of file gmg-inline.icc.
ADart1 | Un brin de la carte |
ADart2 | Un brin de la carte |
AOrbit | Une orbite quelconque |
Definition at line 32 of file gmg-topology.cc.
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.
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
An | Le nombre d'arêtes à coudre |
canSewBorders(ADart1, ADart2, 2, 2*An)
Definition at line 193 of file gmg-border.cc.
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.
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
An | Le nombre d'arêtes à coudre |
canSewBorders(ADart1, ADart2, 2, 2*An)
Definition at line 188 of file gmg-border.cc.
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).
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
An | Le nombre d'itérations à effectuer |
canSewBorders(ADart1, ADart2, ADim, An)
Definition at line 160 of file gmg-border.cc.
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).
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
An | Le 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 | ||
) |
ADart | Un pointeur sur un brin |
ADim | Une dimension |
Definition at line 40 of file gmg-contraction.cc.
Teste si l'extrusion de la cellule de dimension ADim incidente à ADart selon le chemin donné par APath est possible.
ADart | Un brin de la carte incident à la cellule à extruder |
ADim | Une dimension (1 ou 2) |
APath | Un brin de la carte incident au chemin d'extrusion |
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.
ADart | Un brin de la carte incident à la cellule à extruder |
ADim | Une dimension (1 ou 2) |
AClosed | Un booléen indiquant si la révolution est complète (angle de 360°) |
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.
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
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'.
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
AMarkToExtrude | Un numéro de marque |
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é.
ADart | Un brin marqué du volume dans lequel insérer la face |
AMarkNumber | Un numéro de marque |
ANoCrossedVolume | Un 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 |
ANoTwoEdgesFace | Un 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 |
ANoTwoFacesVolume | Un booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces |
Definition at line 280 of file gmg-insertion.cc.
Teste si les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2 peuvent être fusionnées.
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
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.
ADart | Un brin de la carte |
AInsertVertices | Un booléen indiquant s'il faut insérer des sommets sur les arêtes de la face avant d'effectuer la quadrangulation |
Definition at line 28 of file gmg-quadrangulation.cc.
bool CGMapGeneric::canRemove | ( | CDart * | ADart, |
int | ADim | ||
) |
ADart | Un pointeur sur un brin |
ADim | Une dimension |
Definition at line 45 of file gmg-removal.cc.
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.
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
An | Le nombre d'itérations à effectuer |
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.
AOrbit | l'orbite plongée à tester |
AAttributeIdentity | L'identificateur de l'attribut à vérifier |
AEmbeddingMustExist | Un booléen indiquant si la détection d'une orbite non plongée doit provoquer une erreur |
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.
Definition at line 554 of file gmg-topology.cc.
Ferme une polyligne pour former une face.
ADart | Un brin quelconque d'une polyligne existante |
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.
ADart | Un pointeur sur brin |
ADim | Une dimension |
ADeleteDarts | Un 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.
|
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
AMarkNumberC1 | Un numéro de marque indiquant une 1-contraction (et vaut -1 s'il n'y a pas de 1-contractions) |
AMarkNumberC2 | Un numéro de marque indiquant une 2-contraction (idem) |
AMarkNumberC3 | Un numéro de marque indiquant une 3-contraction (idem) |
AMarkNumberS0 | Un numéro de marque indiquant une 0-suppression (idem) |
AMarkNumberS1 | Un numéro de marque indiquant une 1-suppression (idem) |
AMarkNumberS2 | Un numéro de marque indiquant une 2-suppression (idem) |
ADeleteDarts | Un booléen indiquant si la contraction doit se faire en supprimant des brins |
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é.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1, 2 ou 3) |
ADeleteDarts | Un booléen indiquant si la contraction doit se faire en supprimant des brins |
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.
AMarkNumber | Un numéro de marque |
ANbi | Le nombre de i-bords |
ANb0Coupled | Le 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.
ADart | Un brin de la carte |
AOrbit | Une orbite quelconque |
ANbi | Le 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.
AMarkNumber | Un numéro de marque |
ANbi | Les 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.
ADart | Un brin de la carte |
AOrbit | Une orbite quelconque |
ANbi | Les 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.
Definition at line 89 of file gmg-topology.cc.
|
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.
AClosed | Un booléen indiquant si la révolution est complète (angle de 360°) |
ANbEdges | Le nombre d'arêtes 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 |
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.
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
AMeshDimension | La dimension du maillage (0, 1 ou 2) |
ACreatedFaces | Un tableau de dimension 3*2 de booléens |
AFacesCorners | Un 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.
AMeridians | Le nombre (non nul) de méridiens du cylindre |
AParallels | Le nombre (non nul) de parallèles du cylindre |
ABorder1 | L'adresse d'un pointeur sur brin |
ABorder2 | L'adresse d'un pointeur sur brin |
AClose1 | Un booléen indiquant s'il faut fermer le bord incident à ABorder1 |
AClose2 | Un 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.
AMeridians | Le nombre (non nul) de méridiens du cylindre |
AParallels | Le nombre (non nul) de parallèles du cylindre |
ABorder1 | L'adresse d'un pointeur sur brin |
ABorder2 | L'adresse d'un pointeur sur brin |
AClose1 | Un booléen indiquant s'il faut fermer le bord incident à ABorder1 (voir méthode 'createTopoCylinder' ci-dessus) |
AClose2 | Un booléen indiquant s'il faut fermer le bord incident à ABorder2 (voir méthode 'createTopoCylinder' ci-dessus) |
Definition at line 208 of file gmg-primitive.cc.
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.
ASx | Le nombre d'arêtes de la polyligne |
AMesh1Corners | Un tableau de 2 pointeurs sur brin |
AModel | Un brin de la carte |
Definition at line 28 of file gmg-primitive-mesh.cc.
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].
ASx | Le nombre d'arêtes de la polyligne |
AModel | Un brin de la carte |
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.
ASx | Le nombre (non nul) de subdivisions de la grille selon la première dimension |
ASy | Le nombre (non nul) de subdivisions de la grille selon la deuxième dimension |
AMesh2Corners | Un tableau de taille 2*2 de pointeurs sur brin correspondant aux coins du maillage 2d |
A3Sewed | Un 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].
ASx | Le nombre (non nul) de subdivisions de la grille selon la première dimension |
ASy | Le nombre (non nul) de subdivisions de la grille selon la deuxième dimension |
A3Sewed | Un booléen indiquant si le maillage est doublé |
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.
ASx | Le nombre (non nul) de subdivisions du maillage 3d selon la première dimension |
ASy | Le nombre (non nul) de subdivisions du maillage 3d selon la deuxième dimension |
ASz | Le nombre (non nul) de subdivisions du maillage 3d selon la troisième dimension |
AMesh3Corners | Un 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].
ASx | Le nombre (non nul) de subdivisions du maillage 3d selon la première dimension |
ASy | Le nombre (non nul) de subdivisions du maillage 3d selon la deuxième dimension |
ASz | Le nombre (non nul) de subdivisions du maillage 3d selon la troisième dimension |
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.
An | Le nombre de triangles qui composent le 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.
An | Le nombre de triangles qui composent le pôle |
Definition at line 102 of file gmg-primitive.cc.
CDart * CGMapGeneric::createTopoPolygon | ( | int | An | ) |
Crée un polygone à An côtés.
An | Le nombre d'arêtes 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.
AMeridians | Le nombre (non nul) de méridiens de la pyramide |
AParallels | Le nombre (non nul) de parallèles de la pyramide |
ABaseDart | L'adresse d'un pointeur sur brin |
APoleDart | L'adresse d'un pointeur sur brin |
ACloseBase | Un 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.
AMeridians | Le nombre (non nul) de méridiens de la pyramide |
AParallels | Le nombre (non nul) de parallèles de la pyramide |
ACloseBase | Un 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.
AMeridians | Le nombre (non nul) de méridiens de la sphère |
AParallels | Le nombre (non nul) de parallèles de la sphère |
ASouthPole | L'adresse d'un pointeur sur brin |
ANorthPole | L'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.
AMeridians | Le nombre (non nul) de méridiens de la sphère |
AParallels | Le nombre (non nul) de parallèles 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).
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] +== –+– –+– ==+ | | | |
Si AMeshDimension==0, les valeurs de ASx et ASy ne sont pas prises en compte.
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
AMeshDimension | La dimension du maillage (0 ou 2) |
ASquareCorners | Un 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.
AMeridians | Le nombre (non nul) de méridiens du tore |
AParallels | Le nombre (non nul) de parallèles du tore |
AEquator | L'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.
AMeridians | Le nombre (non nul) de méridiens du tore |
AParallels | Le nombre (non nul) de parallèles 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).
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.
AMeridians | Le nombre (non nul) de méridiens du tube |
AParallels | Le nombre (non nul) de parallèles du tube |
ABorder1 | L'adresse d'un pointeur sur brin |
ABorder2 | L'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.
AMeridians | Le nombre (non nul) de méridiens du tube |
AParallels | Le nombre (non nul) de parallèles 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.
ADart | Un brin de la carte |
ACellDim | Une dimension |
ABoundingCellDim | La dimension de la cellule englobante |
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.
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.
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.
AMarkNumber | Un numéro de marque |
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é.
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é.
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'.
ADart | Un 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).
ADart | Un brin de la carte |
AOrbit | Une orbite quelconque |
AMap | La carte dans laquelle créer la copie |
ADirectInfoIndex | Un indice de champ directInfo |
ADuplicateEmbeddings | Un booléen indiquant s'il faut ou non dupliquer les plongements des brins |
Definition at line 79 of file gmg-duplication.cc.
|
protected |
Duplique les plongements des brins dupliqués.
ACoverage | Un itérateur quelconque |
AMarkInitial | Un numéro de marque |
AMarkDuplicated | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
AMap | La 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.
AMarkNumber | Un numéro de marque |
AMap | La carte dans laquelle créer la copie |
ADirectInfoIndex | Un indice de champ directInfo |
ADuplicateEmbeddings | Un booléen indiquant s'il faut ou non dupliquer les plongements des brins |
A-Sew | Des booléens indiquant quelles coutures doivent être préservées |
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.
|
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'.
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
AExtrusionWithAdjacentSews | Un booléen |
AExtrusionCoef | Un TCoordinate fixant le coefficient d'extrusion. |
AMarkToExtrude | Un numéro de marque |
AMarkExtruded | Un numéro de marque |
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)'.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
AExtrusionWithAdjacentSews | Un booléen |
AExtrusionCoef | Un TCoordinate fixant le coefficient d'extrusion. |
Definition at line 305 of file gmg-extrusion.cc.
|
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.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
AMarkTreated | Un numéro de marque |
AExtrusionWithAdjacentSews | Un booléen |
AExtrusionCoef | Un TCoordinate fixant le coefficient d'extrusion. |
Definition at line 363 of file gmg-extrusion.cc.
|
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'.
ADart | Un brin de la carte incident à la cellule à extruder |
ADim | Une dimension (1 ou 2) |
APath | Un brin de la carte incident au chemin d'extrusion |
AExtrusionWithAdjacentSews | Un booléen |
AMarkExtruded | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
canExtrudeByPath(ADart, ADim, APath)
Definition at line 440 of file gmg-extrusion.cc.
|
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'.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1 ou 2) |
APath | Un brin de la carte incident au chemin d'extrusion |
AMarkExtruded | Un numéro de marque |
Definition at line 501 of file gmg-extrusion.cc.
|
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'.
ADart | Un brin de la carte incident à la cellule à extruder |
ADim | Une dimension (1 ou 2) |
AClosed | Un booléen indiquant si la révolution est complète (angle de 360°) |
ANbEdges | Le nombre de sections à créer |
AExtrusionWithAdjacentSews | Un booléen |
AMarkExtruded | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
canExtrudeByRevolution(ADart, ADim, AClosed) ANbEdges >= 3
Definition at line 583 of file gmg-extrusion.cc.
|
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'.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1 ou 2) |
AClosed | Un booléen indiquant si la révolution est complète (angle de 360°) |
ANbEdges | Le nombre de sections à créer |
AMarkExtruded | Un numéro de marque |
Definition at line 606 of file gmg-extrusion.cc.
ADart | Un brin de la carte |
AResDart | l'adresse d'un brin : paramètre retour |
AFictiveFaceMark | la marque pour les faces fictives |
Definition at line 234 of file gmg-fictive-face.cc.
ADart | Un brin de la carte |
Definition at line 194 of file gmg-fictive-edge.cc.
Return the root of the uf-tree containing ADart.
ADart | the dart to find the root. |
AIndex | the direct info index to use. |
Definition at line 265 of file gmg-direct-info.cc.
ADart | Un brin de la carte |
AResDart | l'adresse d'un brin : paramètre retour |
AMark | la marque pour les arêtes fictives |
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é.
AMarkNumber | Un numéro de marque |
ADirectInfoIndex | L'indice du champ directInfo à utiliser |
AOrbitUsed | Une 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é.
ADart | Un brin quelconque de la carte |
AOrbit | Une orbite |
ADirectInfoIndex | L'indice du champ directInfo à utiliser |
AOrbitUsed | Une 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.
ADart | Un brin quelconque |
La valeur retournée vaut 0, 1, 2, 3 ou 4.
Definition at line 28 of file gmg-border.cc.
Retourne le champ directInfo demandé du brin ADart après l'avoir retypé en pointeur sur un brin.
ADart | Un brin de la carte |
ADirectInfoIndex | Un indice de champ directInfo |
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.
ADart | Un brin de la carte |
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.
ANbDarts | Le nombre de brins de la carte |
ANb{Vertices,...,CC} | Le nombre de cellules de la carte |
ANbiBorders | Le nombre de i-bords de la carte |
Definition at line 292 of file gmg-topology.cc.
int CGMapGeneric::getMapDimension | ( | ) |
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).
AOrbit | Une orbite quelconque |
AMarkNumber | Un numéro de marque |
ALastMarked | Un pointeur sur le dernier brin marqué |
ADart1 | Une référence sur un pointeur sur un brin |
ADart2 | Une référence sur un pointeur sur un brin |
ADart3 | Une référence sur un pointeur sur un brin |
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.
ADart | Un brin de la carte |
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.
ADart | Un brin de la carte |
AConsider0FreeDartsAsEdges | Un booléen indiquant comment considérer les brins 0-libres |
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.
ADart | Un brin de la carte |
Definition at line 50 of file gmg-polyline.cc.
Retourne la plus petite dimension dans laquelle ADart1 et ADart2 peuvent être cousus.
ADart1 | Un brin quelconque |
ADart2 | Un brin quelconque |
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.
ADart | Un brin du volume |
ANbDarts | Le nombre de brins du volume |
ANb{Vertices,...,CC} | Le nombre de cellules du volume |
ANbiBorders | Le nombre de i-bords du volume |
ANb2BordersWhenClosed | Le nombre total de 2-bords qu'on aurait si le volume incident à ADart était 0-fermé puis 1-fermé. |
AEuler | La caractéristique d'Euler-Poincaré du volume |
AOrient | Le coefficient d'orientabilité du volume |
AGenus | Le 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.
AB2 | Le nombre de 2-bords de la surface |
AQ | Le coefficient d'orientabilité de la surface |
AG | Le genre de la surface |
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.
ADirection | La direction dans laquelle se fait le déplacement |
ALastDart | Le brin de départ |
AOrbit | L'orbite indiquant quel type de déplacement effectuer |
AMarkNumber | Un numéro de marque |
ASelect | Indique s'il faut sélectionner ou désélectionner les brins |
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.
ADirection | La direction dans laquelle se fait le déplacement |
ALastDart | Le brin de départ |
AOrbit | L'orbite indiquant quel type de déplacement effectuer |
AMarkNumber | Un numéro de marque |
ASelect | Indique s'il faut sélectionner ou désélectionner les brins |
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.
AOrbit | Une orbite qui n'est pas une orbite de bord |
AMarkNumberSrce | Un numéro de marque |
AMarkNumberDest | Un 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.
AOrbit | Une orbite qui n'est pas une orbite de bord |
AMarkNumber | Un numéro de marque |
AOrbit>=ORBIT_SELF && AOrbit<=Orbit_CC
Definition at line 208 of file gmg-selection.cc.
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 !
ADart | Un brin quelconque |
AOrbit | Une orbite |
AMarkNumber | Un 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.
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 !
ADart | Un brin quelconque |
AOrbit | Une orbite |
AMarkNumber | Un 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.
AIndex1 | the first direct info index to use. |
AOrbit1 | the first orbit for which initialize union find trees. |
AIndex2 | the second direct info index to use. |
AOrbit2 | the 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.
AIndex | the direct info index to use. |
AOrbit | the 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.
AIndexFace | the direct info index for faces. |
AIndexVol | the 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.
AIndexVertex | the direct info index for vertices. |
AIndexEdge | the direct info index for edges. |
Definition at line 230 of file gmg-direct-info.cc.
Insère une arête topologique entre les sommets incidents aux brins ADart1 et ADart2.
ADart1 | Un pointeur sur un brin |
ADart2 | Un pointeur sur un brin |
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).
AMarkNumber | Un numéro de marque |
ANoCrossedFace | Un 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 |
ANoTwoEdgesFace | Un 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 |
Definition at line 151 of file gmg-insertion.cc.
|
virtual |
Insère une face le long des arêtes sélectionnées du volume donné.
ADart | Un brin marqué du volume dans lequel insérer la face |
AMarkNumber | Un numéro de marque |
ANoCrossedVolume | Un 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 |
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.
AMarkNumber | Un numéro de marque |
ANoCrossedVolume | Un 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 |
ANoTwoEdgesFace | Un 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 |
ANoTwoFacesVolume | Un booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces |
Definition at line 461 of file gmg-insertion.cc.
Insère un sommet topologique sur l'arête incidente au brin ADart.
ADart | Un pointeur sur un brin |
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.
AMarkNumber | Un numéro de marque |
Definition at line 68 of file gmg-insertion.cc.
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).
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
An | Le nombre d'itérations à effectuer |
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.
AMarkNumber | Un numéro de marque |
AExtrusionWithAdjacentSews | Un booléen |
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).
AMarkNumber | Un numéro de marque |
ADeleteDarts | Un booléen indiquant si les cellules isolées doivent être détruites |
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'.
AMarkNumber | Un numéro de marque |
ADeleteDarts | Un booléen indiquant si la fusion doit se faire en supprimant des brins |
Definition at line 367 of file gmg-merge.cc.
Essaie de coudre ADart1 et ADart2 en déterminant la dimension de la couture à l'aide de la méthode 'getSewDimension'.
ADart1 | Un brin quelconque |
ADart2 | Un brin quelconque |
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.
AMarkNumber | Un numéro de marque |
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.
AMarkNumber | Un numéro de marque |
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.
ADart | Un brin de la carte |
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.
Definition at line 531 of file gmg-topology.cc.
bool CGMapGeneric::isDanglingFace | ( | CDart * | ADart | ) |
Definition at line 719 of file gmg-topology.cc.
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.
ADart | Un brin de la carte |
ADimension | Une dimension quelconque (0, 1, 2 ou 3) |
AOrbit | Une orbite quelconque |
Definition at line 668 of file gmg-topology.cc.
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.
ADart | Un brin de la carte |
ADimension | Une dimension quelconque (0, 1, 2 ou 3) |
AOrbit | Une orbite quelconque |
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.
ADart | Un brin de la carte |
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.
ADart | Un brin de la carte |
ACellDim | Une dimension |
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.
ADart | Un brin de la carte |
ACellDim | Une dimension |
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.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
ADeleteDarts | Un booléen indiquant si les cellules isolées doivent être détruites |
Definition at line 206 of file gmg-merge.cc.
|
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).
AMarkNumber | Un numéro de marque indiquant les brins sélectionnés |
ADim | La dimension des cellules qui doivent être isolées |
ADeleteDarts | Un booléen indiquant si les cellules doivent être supprimées une fois isolées |
AVerif | Un booléen indiquant si pour chaque cellule marquée il faut vérifier si l'opération d'isolement est possible |
AMarkTreated | Un 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 |
AMarkTreated!=AMarkNumber AVerif=='faux' ou toutes les cellules marquées peuvent être isolées
Definition at line 127 of file gmg-merge.cc.
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.
ADart | Un brin de la carte |
AOrbit | Une orbite (ORBIT_VOLUME ou ORBIT_CC) |
AOrbit n'est pas une orbite de bord
Definition at line 46 of file gmg-topology.cc.
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.
ADart | Un brin quelconque de la carte |
AOrbit | Une orbite quelconque |
AMarkNumber | Un numéro de marque |
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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
AMarkNumberFrom!=AMarkNumberTo
Definition at line 272 of file gmg-selection.cc.
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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
ADart | Un brin de la carte |
AOrbit | Une 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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
AMarkNumberFrom!=AMarkNumberTo
Definition at line 298 of file gmg-selection.cc.
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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
ADart | Un brin de la carte |
AOrbit | Une 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.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1, 2 ou 3) |
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'.
AMarkNumber | Un numéro de marque |
Definition at line 78 of file gmg-border.cc.
|
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.
ADim | Une dimension (0, 1 ou 2) |
AMarkNumberSrce | Un numéro de marque source |
AMarkNumberDest | Un numéro de marque destination |
Reimplemented in GMap3d::CGMapVertex.
Definition at line 355 of file gmg-extrusion.cc.
|
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).
AMarkSource | Un numéro de marque |
ADim | Une dimension (celle des cellules à isoler) |
AMarkDestination | Un numéro de marque |
AMarkTreated | Un 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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
ADart | Un brin de la carte |
AOrbit | Une 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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un 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.
AOrbit | Une orbite quelconque |
AMarkNumberSrce | Un numéro de marque |
AMarkNumberDest | Un numéro de marque |
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é.
AOrbit | Une orbite quelconque |
AMarkNumber | Un numéro de marque |
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.
ADart | Un brin de la carte |
ADimension | Une dimension (2 ou 3) |
AMarkBorder | Un numéro de marque |
AMarkInterior | Un 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.
AMarkNumber1 | un numéro de marque |
AMarkNumber2 | un numéro de marque différent de AMarkNumber1 |
AOrbit1 | une orbite quelconque (orbite de sélection) |
AOrbit2 | une orbite quelconque (orbite du résultat) |
AMarkResult | la marque où est stocké le résultat |
AInitialMarkIncidentCells | un 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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un 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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
ADart | Un brin de la carte |
AOrbit | Une orbite quelconque |
AMarkNumberFrom!=AMarkNumberTo
Definition at line 364 of file gmg-selection.cc.
Marque tous les brins de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber.
ADart | Un brin quelconque |
AOrbit | Une orbite |
AMarkNumber | Un numéro de marque |
Definition at line 28 of file gmg-selection.cc.
int CGMapGeneric::markRealFace | ( | CDart * | ADart, |
int | AMark, | ||
int | AMark2 | ||
) |
ADart | Un brin de la carte qui doit appartenir à une arête non fictive |
AMark | la marque pour les arêtes fictives |
AMark2 | la marque dont on veut marquer les faces réelles |
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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
AMarkNumberFrom!=AMarkNumberTo
Definition at line 324 of file gmg-selection.cc.
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.
AMarkNumberFrom | Un numéro de marque |
AMarkNumberTo | Un numéro de marque |
ADart | Un brin de la carte |
AOrbit | Une orbite quelconque |
AMarkNumberFrom!=AMarkNumberTo
Definition at line 335 of file gmg-selection.cc.
Fusionne les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2.
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
ADeleteDarts | Un 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'.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1, 2 ou 3) |
ADeleteDarts | Un booléen indiquant si la fusion doit se faire en supprimant des brins |
Definition at line 348 of file gmg-merge.cc.
Merge the two uf-trees containing ADart1 and ADart2.
ADart1 | the dart of a first uf-tree. |
ADart2 | the dart of a second uf-tree. |
AIndex | the direct info index to use. |
Definition at line 282 of file gmg-direct-info.cc.
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.
ADart1 | Un brin de la carte |
AMarkNumber1 | Un numéro de marque |
ADart2 | Un brin de la carte |
ADimension | Une dimension de couture (2 ou 3) |
Definition at line 52 of file gmg-sew.cc.
Prolonge une polyligne (en rajoutant une arête à son bout). Si ADart vaut NULL, crée un premier brin d'une nouvelle polyligne.
ADart | Un brin constituant le bout d'une polyligne existante |
isIsolatedPolyline(CDart)
Definition at line 99 of file gmg-polyline.cc.
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.
ADart | Un brin de la carte |
AInsertVertices | Un booléen indiquant s'il faut insérer des sommets sur les arêtes de la face avant d'effectuer la quadrangulation |
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'.
AMarkNumber | Un numéro de marque |
AInsertVertices | Un booléen indiquant s'il faut insérer des sommets sur les arêtes des faces avant d'effectuer la quadrangulation |
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.
ADart | Un pointeur sur brin |
ADim | Une dimension |
ADeleteDarts | Un 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.
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é.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
ADeleteDarts | Un booléen indiquant si la suppression doit se faire en supprimant des brins |
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é.
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.
AMarkNumber | Un numéro de marque |
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 ?)
AMarkNumber | Un numéro de marque |
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 ?)
AMarkNumber | Un numéro de marque |
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.
AMarkNumber | Un numéro de marque |
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.
AAlphaIndex | Une dimension (0, 1, 2 ou 3) |
ADirectInfoIndex | Un indice de champ directInfo |
Definition at line 133 of file gmg-direct-info.cc.
|
protected |
Coud les brins dupliqués entre eux. Les brins traités sont ceux parcourus qui sont marqués avec la marque AMarkNumber.
ACoverage | Un itérateur quelconque |
AMarkNumber | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
AMap | La carte dans laquelle créer la copie |
A-Sew | Des 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.
Definition at line 29 of file gmg-fictive-edge.cc.
|
virtual |
Definition at line 73 of file gmg-fictive-face.cc.
|
virtual |
Definition at line 29 of file gmg-fictive-face.cc.
Détruit la dernière arête (dont le brin 0-libre est donné par ADart) d'une polyligne.
ADart | Le bout d'une polyligne |
isIsolatedPolyline(ADart)
Definition at line 126 of file gmg-polyline.cc.
|
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.
ADart | Un brin quelconque d'un bord de dimension ADim |
ADim | Une 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.
AMarkNumber | Un numéro de marque |
ADim | Une dimension |
Definition at line 68 of file gmg-stop-up.cc.
|
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
AMarkNumber | Un numéro de marque |
ADirectInfoIndex1 | Un premier indice de champ directInfo à utiliser |
ADirectInfoIndex2 | Un second indice de champ directInfo à utiliser |
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.
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
AExtrusionWithAdjacentSews | Un 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 |
AMarkExtruded | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
canExtrudeCell(ADart, ADim)
Definition at line 85 of file gmg-extrusion.cc.
Triangule la cellule de dimension ADim incidente à ADart.
ADart | Un brin de la carte |
ADim>1 et ADim<=3
Definition at line 132 of file gmg-triangulation.cc.
Triangule l'arête incidente à ADart (la "coupe" en deux).
ADart | Un brin de la carte |
Reimplemented in GMap3d::CGMapVertex.
Definition at line 28 of file gmg-triangulation.cc.
Triangule la face incidente à ADart.
ADart | Un brin de la carte |
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é.
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1, 2 ou 3) |
Definition at line 147 of file gmg-triangulation.cc.
Triangule le volume incident à ADart.
ADart | Un brin de la carte |
Reimplemented in GMap3d::CGMapVertex.
Definition at line 85 of file gmg-triangulation.cc.
|
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.
ADart | Un brin de la carte, par lequel on est arrivé sur ce sommet |
ANoCrossedVolume | Un booléen indiquant si l'insertion de face doit ne pas entraîner l'apparition d'un volume croisé (voir la méthode 'insertFace') |
AMarkNumber | Un numéro de marque permettant de repérer les brins sélectionnés |
ANext | Un pointeur sur un brin (paramètre en sortie uniquement) |
ACrossed | Un booléen indiquant si le brin ANext est tel que la face à insérer est croisée (paramètre en sortie uniquement) |
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.
AMarkNumber | Un numéro de marque |
Definition at line 99 of file gmg-selection.cc.
Démarque tous les brins de l'orbite AOrbit incidente à ADart pour la marque numéro AMarkNumber.
ADart | Un brin quelconque |
AOrbit | Une orbite |
AMarkNumber | Un numéro de marque |
Definition at line 86 of file gmg-selection.cc.
int CGMapGeneric::unmarkRealFace | ( | CDart * | ADart, |
int | AMark, | ||
int | AMark2 | ||
) |
ADart | Un brin de la carte qui doit appartenir à une arête non fictive |
AMark | la marque pour les arêtes fictives |
AMark2 | la marque dont on veut démarquer les faces réelles |
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.
AMarkNumber | Un numéro de marque |
ADim | Une dimension |
Definition at line 28 of file gmg-unsew.cc.