La classe ressource segment est une classe purement abstraite. Elle permet de définir les propriétés intrinsèques des segments dont les méthodes pourront être utilisées sans surchargement nécessaire dans les classes filles.
Par ailleurs, l'héritage de la classe ressource double nous donne accès au stockage d'une variable de type double que nous utilisons pour conserver la position courrante du curseur sur le segment.
Définition - Un segment est défini dans le plan P(x,y) orthogonal et est borné dans cet espace par l'intervalle définit par les points P0(x0,y0) P1(x1,y1).
Variables Internes - Un segment possède cinq types d'objets internes:
Constructeurs - Il existe actuellement 2 constructeurs pour la classe segment:
xyzRessourceSegment(xyzRessource *_parent, char *_id, xyzDouble _x0 = 0.0f, xyzDouble _y0 = 0.0f, xyzDouble _x1 = 1.0f, xyzDouble _y1 = 1.0f); xyzRessourceSegment(xyzRessource *_parent, xyzRessourceSegment &_source);
La variable noise est initialisée à zéro à la construction partant du principe que ce n'est qu'une option activable sur demande. La variable t est quant à elle initialisée à linear, choix complètement arbitraire. La variable deltaX pour nos besoins actuels est elle initialisée à 0.75.
Méthodes - Voici la liste des méthodes définies dans la classe segment:
virtual xyzRessource *clone(void) = 0;
La méthode clone est utilisée pour clôner ledit segment.
virtual xyzDouble operator += (const xyzDouble _number); virtual xyzDouble operator -= (const xyzDouble _number); virtual xyzDouble operator = (const xyzDouble _number);
Ces méthodes sont utilisée pour manipuler le curseur qui pointe sur ce segment.
virtual xyzBool isSegmentDefinedAt(xyzDouble _x);
Permet de savoir si le segment est définit au point _x sur [x0,x1[.
virtual void setNoise(xyzDouble _level);
Cette méthode permet de fixer le niveau de bruit sur le segment.
virtual xyzDouble getPotential(void) = 0;
Cette méthode purement virtuelle doit permettre de déterminer le potentielau point value. Ceci aura bien évidemment lieu dans les classes filles pour lesquelles cet méthode sera surchargée.
virtual xyzBool hasPoint(xyzDouble _x, xyzDouble _y);
Permet de savoir si le point P(_x,_y) est un des points qui borne l'intervalle de notre segment.
virtual xyzBool replacePoint(xyzDouble _x0, xyzDouble _y0, xyzDouble _x1, xyzDouble _y1);
Permet de remplacer le point P(_x0,_y0), si celui-ci est défini, par le point P(_x1,_y1).