+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué Avatar de kéraunos
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 236
    Points : 114
    Points
    114

    Par défaut [Graphviz] Faire correspondre un arrowhead avec un arrowtail

    Bonjour à tous,

    Ce que je cherche à faire :
    Dans un graphe dessiné à l'aide de la bibliothèque Graphviz, faire correspondre la tête d'une flèche avec la queue d'une autre flèche, sur un nœud donné. Le nœud est la cible de la première flèche et est la base de la seconde. Les deux flèches sont liées et forment un chemin continu :

    graphe.png

    Ce que j'ai trouvé jusqu'ici :
    Utiliser par exemple la propriété samehead pour faire correspondre les têtes de deux flèches, puis inverser la direction de l'une des flèches à l'aide de la propriété dir=back.

    Deux questions :
    - N'existe-t-il pas un moyen plus simple, moins détourné ?
    - Les propriétés samehead et sametail agrègent-elles les têtes et les queues des flèches sur les "compass ports" d'un nœud (ie. les 8 points cardinaux n, ne, e, se, s, sw, w, nw) ou permettent-elles de les faire correspondre n'importe où sur le contour du nœud ?

    Merci.

  2. #2
    Expert Confirmé Sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 2 323
    Points : 5 458
    Points
    5 458

    Par défaut

    Je ne connais pas graphviz, mais n'y a-t-il pas une documentation ou un site officiel qui puisse te renseigner?

    Cela dit, pour mon expérience sur les graphes, on a plutôt tendance à mettre les extrémités en oppositions: les degrés entrant se groupent en un point, et les degrés sortant se groupent au point diamétralement opposés du nœud.
    Cela donne des graphes om les nœuds sont "dans le flux".

    J'imagine donc que ton problème n'est pas forcément codé.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre habitué Avatar de kéraunos
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 236
    Points : 114
    Points
    114

    Par défaut

    Bonjour,
    Merci pour ta réponse, dont je ne comprends pas tout mais peu importe.

    Il existe bel et bien une doc officielle Graphviz, d'où est tirée ma solution avec samehead et dir=back.

    Je maintiens que j'ai impérativement besoin de flèches qui suivent le comportement décrit dans mon premier message. C'est indépendant de ma volonté, c'est pour coller à une norme de représentation.

    Merci.

  4. #4
    Expert Confirmé Sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 2 323
    Points : 5 458
    Points
    5 458

    Par défaut

    Je ne sais pas que te dire. à tout hasard, cherche avec les mots-clés graphviz et "<nom de ta norme>"
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre habitué Avatar de kéraunos
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 236
    Points : 114
    Points
    114

    Par défaut

    Cette norme n'est ni connue ni répandue, je travaille sur un projet scientifique.
    En tout cas, si un connaisseur de Graphviz qui passe par là connait au moins la réponse à ma deuxième question, je le remercie d'avance.
    Merci.

  6. #6
    Membre habitué Avatar de kéraunos
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 236
    Points : 114
    Points
    114

    Par défaut

    Apparemment en utilisant samehead et sametail sur deux flèches devant représenter un "rebond" sur un nœud (tel que décrit dans mon premier message), on peut faire facilement coïncider la tête de la première avec la base de la seconde.
    Le problème alors est que les tangentes ne sont plus correctes du tout : les flèches ne semblent plus pointer vers le (ou partir du) nœud commun. Graphiquement c'est comme si les flèches arrivaient sur (ou partaient d') un point sans dimension, et non plus sur un nœud elliptique ou rond. Donc l'aspect "rebond" tel que montré dans mon premier message est perdu.
    Y a-t-il un moyen de contraindre les flèches à pointer vers le center du nœud plutôt que vers le point de contact à la surface du nœud ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •