January 24, 2003  
 

Rien

Rien

Nouvelles courbes

Généraliser les courbes n'était pas une chose facile: en effet, Oofelie ne possède pas de système général pour accéder de manière uniforme à l'ensemble des données. Ainsi, accéder à un une valeur lissée, à une résultante, à la base de donnée ou à une valeur globale (le temps par exemple) demandent des mécanismes très différents.

Jusqu'à présent, nous utilisions la classe ToMatlab (ancienne classe qui a été écrite très rapidement au début de la migration vers le C++. ToMatlab a de nombreux défauts. Par exemple:

Pour corriger ces problèmes et obtenir un truc fiable (et surtout réutilisable), j'ai essayé d'appliquer quelques patterns définis dans le bouquin Design Patterns de Gamma, un bouquin que tout le monde devrait lire.

Exemples:

Refer curves(metafor.curves()); crée une référence vers le ValuesManager de Metafor.
curves.define(1, NODE_PO, 5, TX|RE); courbe 1 = déplacement du noeud 5
curves.define(3, NODE_PO, 1, SMOOTH_EPL); courbe 3 = défo plastique lissée au noeud 1
curves.define_t(6); courbe 6 = le temps
curves.define(5, CURVE_PO, 2, GF|TY|I2); courbe 5 = comp verticale de la force sur la ligne 2
curves.define(10, INTERACTION_PO, 1, TY); courbe 10 = force verticale sur la matrice de contact 1
curves.define(12, CURVE_PO, 2, GF|TX|TY|I2); courbe 12 = amplitude de la force sur la courbe 2

Les fichiers .v sont les fichiers binaires, les .m sont les fichiers matlab.

Visualisation des courbes

Pour visauliser les courbes, il fallait créer un objet "courbe" et le drawable associé. Il fallait aussi étendre BWin pour pouvoir configurer plusieurs fenêtres en même temps. Le nombre de threads augmentant, il a fallu rendre plus robuste les interactions entre ceux-ci.

Les modifs faites sont:

Exemples :

MetaFunct gcurve1; création d'une MetaFunct
gcurve1.set_ord(curves, 5, 10); courbe 5 comme ordonnée de la fonction numéro 10 (numéro utilisateur au choix)
gcurve1.set_abs(curves, 6, 10); courbe 6 comme abscisse de la fonction numéro 10
gcurve1.set_ord(curves, 8, 20); courbe 8 comme ordonnée de la fonction numéro 20
gcurve1.set_abs(curves, 6, 20); courbe 6 comme abscisse de la fonction numéro 20
VizWin winc; création d'une fenêtre
winc.add(gcurve1); ajout de la MetaFunct à la fenêtre
metafor.add_win(winc); ajout de la fenêtre à l'analyse
 
MetaFunct gcurve2; création d'une fenêtre
gcurve2.set_ord(curves, 8); courbe 8 comme ordonnée de la fonction
gcurve2.set_abs(curves, 6); courbe 6 comme abscisse de la fonction
VizWin winc2; création d'une fenêtre
winc2.add(gcurve2); ajout de la MetaFunct à la fenêtre
metafor.add_win(winc2); ajout de la fenêtre à l'analyse

Remarques

Tout n'est pas parfait : voici les choses à ajouter dans la suite

Documentation "vulgarisée"

Une documentation pour utilisateur est disponible dans la doc officielle de Metafor sur ce même site : doc courbes.

 

(C) RoBo 2003

 

Back to Metafor web server
created :January 22, 2003   modified : January 23, 2003
contact : r_boman_AT_yahoo.fr