| 1 |
gervaislavoie |
332 |
#ifndef _OPTNOEUD_ |
| 2 |
|
|
#define _OPTNOEUD_ |
| 3 |
|
|
|
| 4 |
|
|
#ifdef WINDOWS_VERSION |
| 5 |
|
|
#ifdef BUILT_DLL_GEOMETRIE |
| 6 |
|
|
#define DLLPORTGEOMETRIE __declspec(dllexport) |
| 7 |
|
|
#else |
| 8 |
|
|
#define DLLPORTGEOMETRIE __declspec(dllimport) |
| 9 |
|
|
#endif |
| 10 |
|
|
#else |
| 11 |
|
|
#define DLLPORTGEOMETRIE |
| 12 |
|
|
#endif |
| 13 |
|
|
|
| 14 |
francois |
470 |
#include "fem_noeud.h" |
| 15 |
gervaislavoie |
528 |
#include "opt_triangle.h" |
| 16 |
gervaislavoie |
332 |
|
| 17 |
|
|
|
| 18 |
|
|
class DLLPORTGEOMETRIE OPT_NOEUD |
| 19 |
|
|
{ |
| 20 |
|
|
public: |
| 21 |
francois |
470 |
OPT_NOEUD(FEM_NOEUD* noeud); |
| 22 |
gervaislavoie |
332 |
OPT_NOEUD(OPT_NOEUD& mdd); |
| 23 |
|
|
virtual ~OPT_NOEUD(); |
| 24 |
francois |
470 |
|
| 25 |
|
|
virtual FEM_NOEUD* get_fem_noeud(void); |
| 26 |
gervaislavoie |
332 |
virtual unsigned long get_id(void); |
| 27 |
francois |
470 |
|
| 28 |
gervaislavoie |
332 |
virtual double get_x(void); |
| 29 |
|
|
virtual double get_y(void); |
| 30 |
|
|
virtual double get_z(void); |
| 31 |
gervaislavoie |
398 |
virtual double get_x_initial(void); |
| 32 |
|
|
virtual double get_y_initial(void); |
| 33 |
|
|
virtual double get_z_initial(void); |
| 34 |
gervaislavoie |
332 |
virtual double* get_coord(void); |
| 35 |
|
|
|
| 36 |
|
|
virtual void change_x(double xx); |
| 37 |
|
|
virtual void change_y(double yy); |
| 38 |
|
|
virtual void change_z(double zz); |
| 39 |
gervaislavoie |
398 |
virtual void change_x_initial(double x_initial); |
| 40 |
|
|
virtual void change_y_initial(double y_initial); |
| 41 |
|
|
virtual void change_z_initial(double z_initial); |
| 42 |
gervaislavoie |
332 |
virtual void change_coord(double *coo); |
| 43 |
|
|
|
| 44 |
francois |
470 |
virtual double get_norme_orientee_deplacement(void); |
| 45 |
|
|
virtual void change_norme_orientee_deplacement(void); |
| 46 |
|
|
|
| 47 |
|
|
virtual OT_VECTEUR_3D get_normale(void); |
| 48 |
gervaislavoie |
332 |
virtual void change_normale(OT_VECTEUR_3D vec); |
| 49 |
francois |
470 |
|
| 50 |
gervaislavoie |
332 |
virtual OT_VECTEUR_3D get_normale_initiale(void); |
| 51 |
|
|
virtual void change_normale_initiale(void); |
| 52 |
francois |
470 |
|
| 53 |
gervaislavoie |
332 |
virtual void change_solution(double val); |
| 54 |
|
|
virtual double get_solution(void); |
| 55 |
|
|
|
| 56 |
|
|
virtual int get_num(void); |
| 57 |
|
|
virtual void change_num(int val); |
| 58 |
|
|
|
| 59 |
gervaislavoie |
495 |
virtual int get_mvt_normal(void); |
| 60 |
|
|
virtual void change_mvt_normal(int mvt); |
| 61 |
gervaislavoie |
398 |
|
| 62 |
gervaislavoie |
495 |
/*virtual int get_contrainte(void); |
| 63 |
|
|
virtual void change_contrainte(int cont);*/ |
| 64 |
francois |
470 |
|
| 65 |
gervaislavoie |
528 |
virtual int get_arret_gradient(void); |
| 66 |
|
|
virtual void change_arret_gradient(int grad); |
| 67 |
gervaislavoie |
398 |
|
| 68 |
gervaislavoie |
495 |
/*virtual int get_fixe_au_depart(void); |
| 69 |
|
|
virtual void change_fixe_au_depart(int fixe);*/ |
| 70 |
gervaislavoie |
398 |
|
| 71 |
gervaislavoie |
495 |
virtual int get_mobile_au_depart(void); |
| 72 |
|
|
virtual void change_mobile_au_depart(int mob); |
| 73 |
|
|
|
| 74 |
|
|
virtual int get_mobile(void); |
| 75 |
|
|
virtual void change_mobile(int mob); |
| 76 |
|
|
|
| 77 |
|
|
virtual int get_a_replacer(void); |
| 78 |
|
|
virtual void change_a_replacer(int replacer); |
| 79 |
|
|
|
| 80 |
gervaislavoie |
528 |
/*virtual int get_a_ete_replace(void); |
| 81 |
|
|
virtual void change_a_ete_replace(int replace);*/ |
| 82 |
gervaislavoie |
495 |
|
| 83 |
gervaislavoie |
528 |
virtual int get_num_replacement(void); |
| 84 |
|
|
virtual void change_num_replacement(int num); |
| 85 |
|
|
|
| 86 |
gervaislavoie |
398 |
virtual double get_terme_gradient_f(void); |
| 87 |
|
|
virtual void change_terme_gradient_f(double valeur); |
| 88 |
|
|
|
| 89 |
gervaislavoie |
528 |
virtual double get_sol_deplacement_virtuel(void); |
| 90 |
|
|
virtual void change_sol_deplacement_virtuel(double deplacement); |
| 91 |
|
|
|
| 92 |
|
|
virtual double get_sens_depl_virtuel(void); |
| 93 |
|
|
virtual void change_sens_depl_virtuel(double signe); |
| 94 |
|
|
|
| 95 |
|
|
//virtual double get_depl_reel_precedent(void); |
| 96 |
|
|
//virtual void change_depl_reel_precedent(double depl); |
| 97 |
|
|
|
| 98 |
|
|
virtual double get_depl_avant_algo_grad(void); |
| 99 |
|
|
virtual void change_depl_avant_algo_grad(double signe); |
| 100 |
|
|
|
| 101 |
|
|
virtual double* get_coord_lissee(void); |
| 102 |
|
|
virtual void change_coord_lissee(double* coord); |
| 103 |
|
|
|
| 104 |
|
|
virtual TPL_MAP_ENTITE<class OPT_NOEUD*> get_liste_noeud_voisin(void); |
| 105 |
|
|
virtual void change_liste_noeud_voisin(TPL_MAP_ENTITE<class OPT_NOEUD*> lst); |
| 106 |
|
|
|
| 107 |
|
|
/*virtual TPL_MAP_ENTITE<class OPT_TRIANGLE*> get_liste_tri_voisin(void); |
| 108 |
|
|
virtual void change_liste_tri_voisin(TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst);*/ |
| 109 |
gervaislavoie |
332 |
|
| 110 |
|
|
private: |
| 111 |
francois |
470 |
FEM_NOEUD* fem_noeud; |
| 112 |
|
|
double xyz0[3]; |
| 113 |
gervaislavoie |
528 |
double xyz_lissee[3]; // Sert à garder en mémoire la position lissée de chaque noeud lors du lissage |
| 114 |
francois |
470 |
double norme_orientee_deplacement; |
| 115 |
gervaislavoie |
332 |
OT_VECTEUR_3D normale; |
| 116 |
gervaislavoie |
398 |
OT_VECTEUR_3D normale_initiale; |
| 117 |
gervaislavoie |
332 |
int num; |
| 118 |
gervaislavoie |
528 |
int mvt_normal; // Si mvt_normal==1, le noeud doit être déplacé par la méthode du mouvement normal |
| 119 |
|
|
int arret_gradient; // Si arret_gradient==1, le noeud a été bloqué par le gradient |
| 120 |
|
|
int mobile_au_depart; // Pour afficher le gradient des triangles qui ont 3 noeuds fixes et qui avaient 3 noeuds mobiles au départ |
| 121 |
|
|
int mobile; // Si mobile==1, le noeud peut être déplacé et appartient à un triangle ayant 1 ou 2 noeuds fixes |
| 122 |
|
|
int a_replacer; // Noeud mobile à replacer par l'algo du gradient (au moins un triangle dépasse la valeur seuil) |
| 123 |
|
|
//int a_ete_replace; // Noeud replacé par l'algorithme du gradient (enlever) |
| 124 |
|
|
int num_replacement; // 1 si dans fonction f1, 2 si dans fonction f2 |
| 125 |
|
|
double terme_gradient_f; // Terme i du gradient de f où i correspond à la numérotation globale du noeud |
| 126 |
|
|
double sol_deplacement_virtuel; // Déplacement virtuel du noeud |
| 127 |
|
|
double sens_depl_virtuel; // Sens du déplacement virtuel total |
| 128 |
|
|
//double depl_reel_precedent; // Valeur du déplacement réel à l'itération précédente (enlever) |
| 129 |
|
|
double depl_avant_algo_grad; // Déplacement du noeud avant l'algo du gradient (pour pondérer le pas de l'algo) |
| 130 |
|
|
TPL_MAP_ENTITE<class OPT_NOEUD*> lst_noeud_voisin; // Noeuds voisins au noeud |
| 131 |
|
|
//TPL_MAP_ENTITE<class OPT_TRIANGLE*> lst_tri_voisin; // Triangles voisins au noeud |
| 132 |
gervaislavoie |
332 |
}; |
| 133 |
|
|
|
| 134 |
|
|
#endif |