C4ptainCrunch/info-f-307-creatikz

Pourquoi mettre des positions dans un edge?

etnarek opened this issue · 3 comments

Pourquoi avoir ajouté des positions à un edges comme nous pouvons le voir ici:
https://github.com/C4ptainCrunch/dream-team/blob/master/src/models/TikzEdge.java#L10

@jhellinckx

Evite d'ouvrir une issue sur un choix d'implémentation ou pour poser une simple question, la conversation Facebook suffit amplement pour ça. Je reconnais par contre que y'a aucune doc sur ce qu'on a fait cette semaine, donc des questions il y en aura, mais tu comprendras qu'on a pas nécessairement eu le temps non plus.

Pour en venir à ladite question, les edges ont des positions pour deux raisons.
Premièrement, dans le code source Tikz on utilise directement des positions pour dessiner des Edge, et non pas des positions relatives à leurs noeuds incidents :
screen shot 2016-04-16 at 20 50 04
Il est donc logique qu'un Edge ait deux positions. Cette raison ne sera en revanche peut-être plus valable lorsqu'on donnera des positions relatives aux Edge.
Deuxièmement, ça permet de dessiner des Edge sans leur fournir deux noeuds incidents, ce qui est utile notamment dans les prototypes utilisés par l'outil qui crée des TikzComponent. On peut par contre se poser la question si un Edge peut exister dans le canvas principal s'il ne relie pas deux noeuds. Mais quand bien même ce comportement n'est pas permis, il est possible que la position d'une des extrémités d'un Edge ne soit pas exactement égale à la position du noeud auquel cette extrémité est incidente si on décide de dessiner l'extrémité du noeud non pas au centre dudit noeud mais à son périmètre (ce qui sera sans doute nécessaire pour rendre la tête de la flèche (arc) visible). Encore une fois, donner des positions relatives dans le code source Tikz rend cette dernière remarque obsolète.

Evite d'ouvrir une issue sur un choix d'implémentation ou pour poser une simple question, la conversation Facebook suffit amplement pour ça.

En même temps, vu la longueur de la réponse, Facebook aurait pas trop été adapté ^^

Je ré-ouvre l'issue parce que j'ai aussi l'impression que ce n'est pas un bon design et que ce serait con d'oublier de fixer ça vu la taille de la codebase :)

Edit : pourquoi ne pas juste faire un getter getFromPosition() qui dérive la position de firstNode ? Sinon ça revient à faire de la duplication d'info non ?

En même temps, vu la longueur de la réponse, Facebook aurait pas trop été adapté ^^

Sauf que le problème n'est pas de décider du meilleur support une fois que la réponse est donnée. Je sais pas trop comment et dans quelles circonstances utiliser le tracker de github mais je pense pas que ce soit fait pour poser une question.
Par contre si le premier commentaire de l'issue était plus constructif en expliquant un point de vue (et donc, dans ce cas précis, décrire pourquoi un Edge ne devrait pas avoir de positions), pas de soucis évidemment ; là ce serait un échange qui va dans les deux sens.

pourquoi ne pas juste faire un getter getFromPosition() qui dérive la position de firstNode

J'ai pas exactement pigé ce que t'entends par "dérive" mais je suppose que c'est "renvoyer" ? Si c'est ça, je te renvoie à la deuxième remarque de mon premier commentaire :)