Merci à Christophe Poulain pour sa participation involontaire (voir ses pages "représentation d'une fonction affine" en 3ème).
Je qualifie cet objet de "statique" car ses dimensions sont figées, même si on peut modifier l'affichage avec des changements d'échelle.
Je qualifie cet objet de "dynamique" car la procédure de dessin prend un argument (la longueur de la règle) dont va dépendre la Bounding Box de l'objet.
Le plus simple : on crée un objet statique à partir de l'objet dynamique, et c'est l'objet statique que l'on utilise dans l'environnement 'picture'. Par exemple, on fixe ici une règle de longueur 5 pour les graduations, doù la BB : (-1, -1) (6, 0), et la procedure regle_graduee_dim
conformément à ce que l'on a vu précédemment.
Pour utiliser l'objet dynamique dans l'environnement picture, la procédure donnant la Bounding Box doit être légèrement différente de ce que l'on attend : en effet l'appel dans l'environnement va être du type parametre A (mon_objet_dynamique) cpict
, autrement dit, l'argument A va se trouver sur la pile au-dessus du ou des paramètres à transmettre à l'objet dynamique. Pour gérer ceci, la procédure mon_objet_dynamique_dim
doit faire les copies nécessaires, écarter les coordonnées de A pour ensuite faire son calcul.