cette derniere, pointes par les elements du tableau m oaAttributs, ou de la negation de propriete suivant la valeur du drapeau booleen m bSigne.
6.4 Classe d'un plan de construction
Parmi les methodes de resolution des contraintes geometriques que nous presentons dans la troisieme partie de ce manuscrit, l'une d'elle consiste a determiner un plan de construction de la gure a l'aide de la regle et du compas. Si un tel plan de construction a pu ^etre etabli, l'actualisation des parametres des objets de la gure au cours d'une deformation est opere suivant une approche procedurale. Cette approche consiste a recalculer les parametres des objets les uns apres les autres en suivant les etapes du plan de construction etabli.
Nous decrivons successivement dans les paragraphes suivants la structure de de-pendance utilisee pour decrire un plan de construction, ainsi que l'algorithme de pro-pagation, repris de Cabri-Geometre, utilise pour actualiser les parametres des objets lors d'animations.
6.4.1 Structure de dependance
La relation que nous avons choisie pour representer un plan de construction est la relation de dependance R, utilisee dans Cabri-Geometre, telle que deux objets x et y
sont lies par la relation xRy si la construction de l'objetx depend directement de la construction de l'objet y. Symetriquement, on dit que si deux objets x et y sont tels que xRy alors l'objety est un constituant de l'objetx. L'exemple 6.2 suivant illustre cette relation de dependance.
Exemple 6.2
Relation de dependanceNous considerons la gure dynamique correspondant a un triangle ABC pourvu de son orthocentre H, obtenu a partir des sommets A et B du triangle et du point H. Le graphe des objets et des proprietes de cette gure est illustre par la gure 6.2(a).
Un plan de construction possible de cette derniere consiste a: 1. Creer le point A,
112 Mise en oeuvre des langages d'interface de GDRev
3. Creer le point H,
4. Construire la droite DAB passant par le point A et le point B,
5. Construire la droite DCH passant par le point H et perpendiculaire a la droite DAB,
6. Construire la droite DAH passant par le point A et le point H,
7. Construire la droite DBH passant par le point B et le point H,
8. Construire la droite DAC passant par le point A et perpendiculaire a la droite DBH,
9. Construire la droite Dbc passant par le point B et perpendiculaire a la droite DAH,
10. Construire le point A a l'intersection de la droites DAB et de la droite DAC. Ce plan de construction conduit au graphe des dependances illustre par la gure 6.2(b).
Pour etablir de telles relations, nous avons deni une classe permettant de lier des instances d'objets de la hierarchie des classes d'objets geometriques. Cette classe est la classe CStructureDependanceque nous illustrons par le tableau 6.2.
Cette classe est constituee d'un attribut de type entierm iType identiant le type de la relation de dependance, liant l'objet deni par cette relation, et pointe par
m pObjDeni a ces constituants au nombre de m iNbConstituants et pointes par les elements du tableau m oaConstituants.
La principale methode de cette classe est la fonctionRecalculerObjet. Celle-ci se re-sume a appeler la fonction de calcul associee au type de la relation denie et pointee par l'attributpFctCalcul. Ces fonctions de calcul sont les fonctions protegeesCalculDroite,
CalculDroitePerpendiculaire, ::: speciques aux dierentes relations de dependance qui retournent faux si l'objet n'a pas pu ^etre determine, et vrai sinon.
6.4.2 Propagation de la deformation
L'actualisation des objets d'une gure lors de l'animation d'un point de celle-ci a l'aide d'un plan de construction de cette derniere consiste a determiner dans un etape preliminairela liste des objets de la gure modies et l'ordre d'actualisation de ceux-ci.
6.4 Classe d'un plan de construction 113
AH
Hauteur D Hauteur DBH Droite DAB
Légende
: relation de dépendance entre objets
: arête correspondant à une propriété de perpendicularité : arête correspondant à une propriété d’appartenance
BH Hauteur D Droite DAB
Hauteur DAH
Point A Point H Point B
(a) AC Hauteur D Droite D CH Droite DBC PointC
Point A Point H Point B
CH AC Droite D Hauteur D Droite DBC (b) PointC
Fig. 6.2 { Graphe des proprietes et des dependances d'un triangle et de son ortho-centre.
Une fois cette liste etablie, pour chacune des positions prises par le point deplace au cours de l'animation il s'agit pour le systeme de:
1. recalculer les positions des objets, 2. eacer la gure,
3. reacher les objets de la gure.
Cette etape preliminaire se ramene a un tri topologique sur le sous-graphe des dependances issu de l'objet selectionne. Une maniere d'eectuer un tel tri topologique est de concatener les listes des dependances des objets deplaces a la suite les unes des autres en prenant garde lors de l'elimination des occurrences multiples de garder la derniere occurrence.
114 Mise en oeuvre des langages d'interface de GDRev
class CStructureDependance: public CObject f
== Attributs
public:
=* Type de la relation de dependance *= int m iType;
=* Nombre de constituants de la relation de dependance *= int m iNbConstituants;
=* Pointeur vers l'objet deni par la relation de dependance *= CObjForme * m pObjDeni;
=* Tableau de pointeurs vers les constituants de l'objet deni par la relation de dependance *=
CTypedPtrArray<CObArray, CObjForme*> m oaConstituants;
=* Pointeur vers la fonction de calcul associe a la relation de dependance *= BOOL (CMyStructureDependance::*pFctCalcul) ();
== Operations
public:
=* Fonction de calcul d'un objet *=
BOOL RecalculerObjet( )f return (this->*pFctCalcul)();g; :::
== Operations
protected:
=* Fonction de calcul d'une droite passant par deux points *= BOOL CalculDroite( );
=* Fonction de calcul d'une droite perpendiculaire passant par un point *= BOOL CalculDroitePerpendiculaire( );
::: g;
Tab. 6.2 { Classe CMyStructureDependance.
Exemple 6.3
Propagation de la deformationOn considere la gure dynamique correspondant a un triangle ABC pourvu de son orthocentre H, obtenu a partir des sommets A et B du triangle et du point H. L'objet selectionne pour une animation est le point H. La gure 6.3 donne le graphe des
de-6.4 Classe d'un plan de construction 115
pendances des objets ainsi que le sous-graphe des objets modies suite au deplacement du point H.
: Sous-graphe des dépendances issu du point H : Relation de dépendance
Point A Point H Point B
Droite AC Droite BC PointC Hauteur CH Hauteur AH Hauteur BH Droite AB Légende
Fig. 6.3 { Graphe des dependances d'un triangle et de son orthocentre.
Les listes des dependances des dierents objets de la gure sont reprises dans le tableau 6.3 .
La concatenation des listes des dependances issues du point H donne : Point H, Hauteur DAH, Hauteur DBH, Hauteur DCH, Droite DBC, Droite DAC, Point C, Point C.
L'elimination des occurrences multiples conduit a la liste d'actualisation ordonnee : Point H, Hauteur DAH, Hauteur DBH, Hauteur DCH, Droite DBC, Droite DAC, Point C.
Les performances de cette approche sont dicilement mesurables. Elle donne une impression de uidite et de continuite n'ayant aucune commune mesure avec les situa-tions ou de tels plans de construction n'ont pu ^etre etabli.
116 Mise en oeuvre des langages d'interface de GDRev
Objets Listes des dependances
Les points
Point A Hauteur DAH, Droite DAB, Droite DAC
Point B Hauteur DBH, Droite DAB, Droite DBC
Point C
Point H Hauteur DAH, Hauteur DBH, Hauteur DCH
Les droites Droite DAB Hauteur DCH Droite DAC Point C Droite DBC Point C Hauteur DAH Droite DBC Hauteur DBH Droite DAC Hauteur DCH
Tab. 6.3 { Listes des dependances d'un triangle construit a partir de ses sommets A et B et de son orthocentre H.