Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmv-deformation.hh File Reference

Go to the source code of this file.

Functions

void applyMatrix (const CTransformationMatrix &AMatrix, CDart *ADart, TOrbit AOrbit, int ADirectInfoVertex=-1)
 
void applyMatrix (const CTransformationMatrix &AMatrix, int AMarkNumber, int ADirectInfoVertex=-1)
 
void computeDistanceToVertex (int AMarkNumber, int ADirectInfoIndex, const CVertex &AVertex)
 
void computeDistanceToLine (int AMarkNumber, int ADirectInfoIndex, const CVertex &ALineVertex, const CVertex &ALineDirection)
 
void computeDistanceToPlane (int AMarkNumber, int ADirectInfoIndex, const CVertex &APlaneVertex, const CVertex &APlaneNormal)
 
void normalizeParameter (int AMarkNumber, int ADirectInfoIndex, TCoordinate AMin, TCoordinate AMax)
 
void applyFunctionOnParameter (int AMarkNumber, int ADirectInfoIndex, TFunctionType AFunctionType)
 
void translate (int AMarkNumber, const CVertex &AVector, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void rotate (int AMarkNumber, const CVertex &AAxeVertex, const CVertex &AAxeDirection, TCoordinate AAngle, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void scale (int AMarkNumber, const CVertex &ACenter, const CVertex &ACoef, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void scale (int AMarkNumber, const CVertex &ACenter, TCoordinate ACoef, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void axialScale (int AMarkNumber, const CVertex &AAxeVertex, const CVertex &AAxeDirection, TCoordinate ACoef, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void planarScale (int AMarkNumber, const CVertex &APlaneVertex, const CVertex &APlaneNormal, TCoordinate ACoef, int ADirectInfoVertex=-1, int ADirectInfoParam=-1)
 
void orthoProjectOnPlane (int AMarkNumber, TCoordinate AA, TCoordinate AB, TCoordinate AC, TCoordinate AD)
 

Function Documentation

void applyFunctionOnParameter ( int  AMarkNumber,
int  ADirectInfoIndex,
TFunctionType  AFunctionType 
)

Applique une fonction sur les valeurs (de type TCoordinate) pointées par le champ directInfo[ADirectInfoIndex] des brins porteurs d'un attribut sommet. Les sommets pris en compte sont ceux dont un brin au moins est marqué avec la marque AMarkNumber. Les différents types de fonctions sont répertoriés dans le fichier "math-extension.hh".

Parameters
AMarkNumberUn numéro de marque indiquant les sommets sélectionnés
ADirectInfoIndexUn indice indiquant où sont stockées les valeurs
AFunctionTypeLe type de fonction à appliquer
void applyMatrix ( const CTransformationMatrix AMatrix,
CDart *  ADart,
TOrbit  AOrbit,
int  ADirectInfoVertex = -1 
)

Applique la matrice à tous les sommets appartenant à l'orbite AOrbit incidente au brin ADart. Un sommet est modifié si au moins un brin de son orbite sommet appartient à l'orbite AOrbit incidente à ADart. Si ADirectInfoVertex est positif ou nul, la matrice de transformation est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, la matrice de transformation modifie directement l'attribut sommet.

Parameters
AMatrixUne matrice de transformation
ADartUn brin de la carte
AOrbitUne orbite quelconque
ADirectInfoVertexIndique où récupérer les coordonnées initiales
void applyMatrix ( const CTransformationMatrix AMatrix,
int  AMarkNumber,
int  ADirectInfoVertex = -1 
)

Applique la matrice à tous les sommets marqués avec la marque AMarkNumber. Un sommet est modifié si au moins un brin de son orbite sommet est marqué. Si ADirectInfoVertex est positif ou nul, la matrice de transformation est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, la matrice de transformation modifie directement l'attribut sommet.

Parameters
AMatrixUne matrice de transformation
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer la transformation
ADirectInfoVertexIndique où récupérer les coordonnées initiales
void axialScale ( int  AMarkNumber,
const CVertex AAxeVertex,
const CVertex AAxeDirection,
TCoordinate  ACoef,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique une homothétie de coefficient ACoef selon l'axe déterminé par le sommet AAxeVertex et le vecteur AAxeDirection sur tous les sommets marqués avec la marque AMarkNumber.

Si ADirectInfoVertex est positif ou nul, l'homothétie est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, l'attribut sommet est directement modifié.

Si ADirectInfoParam est positif ou nul, l'étirement est pondéré avec la valeur stockée dans le champ directInfo[ADirectInfoParam].

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer l'homothétie
AAxeVertexUn sommet de l'axe d'homothétie
AAxeDirectionUn vecteur direction de l'axe d'homothétie
ACoefLe coefficient d'homothétie
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération

!AAxeDirection.isNull()

void computeDistanceToLine ( int  AMarkNumber,
int  ADirectInfoIndex,
const CVertex ALineVertex,
const CVertex ALineDirection 
)

Pour chaque sommet dont un brin au moins est marqué avec la marque AMarkNumber, calcule la distance euclidienne entre le plongement de ce sommet et la droite donnée par le sommet ALineVertex et le vecteur directeur ALineDirection puis place le résultat dans le champ directInfo[ADirectInfoIndex] du brin possédant le plongement sommet.

Avant d'appeler cette méthode, il convient de réserver de la mémoire pour stocker les résultats. Cette réservation se fait avec la méthode 'CGMapGeneric::allocMemoryToDirectInfo' avec ABytes = sizeof(TCoordinate) et AOrbitUsed = ORBIT_VERTEX.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexUn indice indiquant quel directInfo utiliser
ALineVertexUn sommet quelconque de la droite
ALineDirectionUn vecteur directeur de la droite

! ALineDirection.isNull()

void computeDistanceToPlane ( int  AMarkNumber,
int  ADirectInfoIndex,
const CVertex APlaneVertex,
const CVertex APlaneNormal 
)

Pour chaque sommet dont un brin au moins est marqué avec la marque AMarkNumber, calcule la distance euclidienne entre le plongement de ce sommet et le plan donné par le sommet APlaneVertex et le vecteur normal APlaneNormal puis place le résultat dans le champ directInfo[ADirectInfoIndex] du brin possédant le plongement sommet.

Avant d'appeler cette méthode, il convient de réserver de la mémoire pour stocker les résultats. Cette réservation se fait avec la méthode 'CGMapGeneric::allocMemoryToDirectInfo' avec ABytes = sizeof(TCoordinate) et AOrbitUsed = ORBIT_VERTEX.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexUn indice indiquant quel directInfo utiliser
APlaneVertexUn sommet quelconque du plan
APlaneNormalUn vecteur normal du plan

! APlaneNormal.isNull()

void computeDistanceToVertex ( int  AMarkNumber,
int  ADirectInfoIndex,
const CVertex AVertex 
)

Pour chaque sommet dont un brin au moins est marqué avec la marque AMarkNumber, calcule la distance euclidienne entre le plongement de ce sommet et le sommet AVertex puis place le résultat dans le champ directInfo[ADirectInfoIndex] du brin possédant le plongement sommet.

Avant d'appeler cette méthode, il convient de réserver de la mémoire pour stocker les résultats. Cette réservation se fait avec la méthode 'CGMapGeneric::allocMemoryToDirectInfo' avec ABytes = sizeof(TCoordinate) et AOrbitUsed = ORBIT_VERTEX.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexUn indice indiquant quel directInfo utiliser
AVertexUn sommet quelconque de l'espace
void normalizeParameter ( int  AMarkNumber,
int  ADirectInfoIndex,
TCoordinate  AMin,
TCoordinate  AMax 
)

Répartit sur le segment [AMin,AMax] par changement de repère 1d les valeurs (de type TCoordinate) pointées par le champ directInfo[ADirectInfoIndex] des brins porteurs d'un attribut sommet. Les sommets pris en compte sont ceux dont un brin au moins est marqué avec la marque AMarkNumber. Remarque: AMin peut être supérieur à AMax.

Parameters
AMarkNumberUn numéro de marque indiquant les sommets sélectionnés
ADirectInfoIndexUn indice indiquant où sont stockées les valeurs
AMinLa borne inférieure du segment de normalisation
AMaxLa borne supérieure du segment de normalisation
void orthoProjectOnPlane ( int  AMarkNumber,
TCoordinate  AA,
TCoordinate  AB,
TCoordinate  AC,
TCoordinate  AD 
)

Projette orthogonalement les sommets dont un brin au moins est marqué sur le plan d'équation AA * x + AB * y + AC * z + AD = 0.

Parameters
AMarkNumberUn numéro de marque
A?Les paramètres de l'équation cartésienne du plan
void planarScale ( int  AMarkNumber,
const CVertex APlaneVertex,
const CVertex APlaneNormal,
TCoordinate  ACoef,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique une homothétie de coefficient ACoef selon le plan déterminé par le sommet APlaneVertex et le vecteur APlaneNormal sur tous les sommets marqués avec la marque AMarkNumber.

Si ADirectInfoVertex est positif ou nul, l'homothétie est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, l'attribut sommet est directement modifié.

Si ADirectInfoParam est positif ou nul, l'étirement est pondéré avec la valeur stockée dans le champ directInfo[ADirectInfoParam].

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer l'homothétie
APlaneVertexUn sommet du plan d'homothétie
APlaneNormalUn vecteur normal du plan d'homothétie
ACoefLe coefficient d'homothétie
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération

! APlaneNormal.isNull()

void rotate ( int  AMarkNumber,
const CVertex AAxeVertex,
const CVertex AAxeDirection,
TCoordinate  AAngle,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique une rotation sur tous les sommets marqués avec la marque AMarkNumber. Un sommet est modifié si au moins un brin de son orbite sommet est marqué.

Si ADirectInfoVertex est positif ou nul, la rotation est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, l'attribut sommet est directement modifié.

Si ADirectInfoParam est positif ou nul, l'angle de rotation est pondéré avec la valeur stockée dans le champ directInfo[ADirectInfoParam].

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer la rotation
AAxeVertexUn sommet de l'axe de rotation
AAxeDirectionUn vecteur directeur de l'axe de rotation
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération

!ALineDirection.isNull()

void scale ( int  AMarkNumber,
const CVertex ACenter,
const CVertex ACoef,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique un étirement sur tous les sommets marqués avec la marque AMarkNumber. Un sommet est modifié si au moins un brin de son orbite sommet est marqué.

Si ADirectInfoVertex est positif ou nul, l'étirement est appliqué sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, l'attribut sommet est directement modifié.

Si ADirectInfoParam est positif ou nul, l'étirement est pondéré avec la valeur stockée dans le champ directInfo[ADirectInfoParam].

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer l'étirement
ACenterLe centre d'étirement
ACoefLes coefficients d'étirement
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération
void scale ( int  AMarkNumber,
const CVertex ACenter,
TCoordinate  ACoef,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique un étirement sur tous les sommets marqués avec la marque AMarkNumber. Pour plus d'informations, voir la méthode 'scale' ci-dessus.

Remarque: La différence avec la méthode précédente réside dans le coefficient d'homothétie. Ici ce coefficient est un nombre réel, ce qui correspond à une homothétie avec des coefficients identiques dans les trois dimensions.

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer l'étirement
ACenterLe centre d'étirement
ACoefLe coefficient d'étirement
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération
void translate ( int  AMarkNumber,
const CVertex AVector,
int  ADirectInfoVertex = -1,
int  ADirectInfoParam = -1 
)

Applique une translation sur tous les sommets marqués avec la marque AMarkNumber. Un sommet est modifié si au moins un brin de son orbite sommet est marqué.

Si ADirectInfoVertex est positif ou nul, la translation est appliquée sur le sommet stocké dans le champ directInfo correspondant du brin, et le résultat est placé dans l'attribut sommet (stocké dans la liste d'embeddings). Si ADirectInfoVertex est strictement négatif, l'attribut sommet est directement modifié.

Si ADirectInfoParam est positif ou nul, la translation est pondérée avec la valeur stockée dans le champ directInfo[ADirectInfoParam].

Parameters
AMarkNumberUn numéro de marque permettant de reconnaître les sommets sur lesquels il faut appliquer la translation
AVectorLe vecteur de translation
ADirectInfoVertexIndique où récupérer les coordonnées initiales
ADirectInfoParamIndique où récupérer le paramètre de pondération