Création de graphes

Pour proposer des idées, ou simplement discuter

Re: Création de graphes

Messagepar Jean-François » 08 Déc 2009 23:10

Bonsoir Patrick
P.Fradin a écrit:
Oui c'est très clair, mais pour le moment on s'est limité à l'affichage du poids, donc ce problème n'a pas (encore) lieu.

Je sais, mais c'est simplement par rapport à la suggestion d'Alphonse (couleur des arête en fonction du poids).
Jean-François
Jean-François
 
Messages: 39
Inscription: 26 Juil 2009 22:34

Re: Création de graphes

Messagepar Alphonse Capriani » 09 Déc 2009 15:14

Aaaahhhh!!!

Une doc à lire et à corriger!!! Ca faisait un moment!!!

Je regarde ca de plus près et je te fais part de mes remarques/suggestions à ce sujet. Affaire à suivre...

Edit : Je viens de lire ta doc.

Je la trouve claire et concise (on est loin des 21 page de Calendrier.pdf et c'est tant mieux :lol:). Quand aux exemples, je suis pas sur qu'il soit nécessaire d'en rajouter : ceux présent dans le pdf suffisent pour illustrer les possibilités offertes par ton fichier.

C'est du bon boulot!!! 8-)
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Création de graphes

Messagepar Jean-François » 04 Jan 2010 19:12

Salut tout le monde et bonne année.
Sinon est-ce que le papa Noël à déposé un joli fichier pour la gestion des graphes avec tout plein d'arêtes ??
Jean-François
Jean-François
 
Messages: 39
Inscription: 26 Juil 2009 22:34

Re: Création de graphes

Messagepar P.Fradin » 04 Jan 2010 20:08

Jean-François a écrit:Salut tout le monde et bonne année.
Sinon est-ce que le papa Noël à déposé un joli fichier pour la gestion des graphes avec tout plein d'arêtes ??


Salut Jean-François,

Et bonne année! Pour le modèle graphes.mod, la balle est dans le camp de Joffrey, son dernier message remonte au 22 décembre disant qu'il boucle la doc, mais je n'ai pas eu de nouvelles depuis. Peut-être est-il débordé :?:
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1837
Inscription: 29 Oct 2008 15:04

Re: Création de graphes

Messagepar Joffrey » 04 Jan 2010 21:30

Bonjour à tous et
BONNE ANNEE !!!


Sinon est-ce que le papa Noël à déposé un joli fichier pour la gestion des graphes avec tout plein d'arêtes ??


Sous mon sapin oui!!!! Ca va arriver pour vous sous peu ... suspens ....

Et bonne année! Pour le modèle graphes.mod, la balle est dans le camp de Joffrey, son dernier message remonte au 22 décembre disant qu'il boucle la doc, mais je n'ai pas eu de nouvelles depuis. Peut-être est-il débordé :?:


J'ai pris un peu de retard, bon d'accord beaucoup :oops: :oops: :oops: :oops: :oops:
L'homme en noir fuyait à travers le désert, et le Pistoléro le suivait ...
Joffrey
 
Messages: 286
Inscription: 16 Juil 2009 17:05
Localisation: Vichy

Re: Création de graphes

Messagepar Alphonse Capriani » 14 Jan 2010 18:25

Salut Joffrey! Salut tout le monde!!!

J'ai testé en détail ton fichier graphes.mac et j'ai plusieurs remarques/suggestions à faire à ce sujet.

Avant d'en arriver là, je poste deux exemples, à savoir le graphe de l'hébesphéno-rotonde triangulaire ou solide de Johnson J92 vu de 2 facons différentes :

Image
Image


et voici le fichier *.teg que j'ai utilisé :
Code: Tout sélectionner
\begin{texgraph}[file,call]
Cmd   [Fenetre(-3+4*i,15-5*i,1+i), Marges(0.5,0.5,0.5,0.5), Border(0)];
   [theta:=0.6261, phi:=1.6036, OriginalCoord(1),IdMatrix()];
   [IdMatrix3D(), ModelView(ortho)];

Include
   "graphes.mac";
   "PolyedresII.mac";

Mac
    Init = [ Matrice:=[0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,
   0,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,
   1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,
   0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,
   1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,
   1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,
   0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,
   0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0],
    NbSommets:=20,
    PosSommets:=[0,i,-0.86602540378443-0.5*i,0.86602540378443-0.5*i,-0.86602540378443+0.5*i,
   -i,0.86602540378443+0.5*i,-1.73205080756888+i,-2*i,1.73205080756888+i,-1.73205080756888-i,
   1.73205080756888-i,2*i,-2,-1-1.73205080756888*i,1-1.73205080756888*i,2,1+1.73205080756888*i,
   -1+1.73205080756888*i,3-3*i],
    typeGraphe:=-1,
    Rayon:=3,
    rayon:=0.25,
    bouclescale:=1,
    dotstyle:=-1,
    linesep:=0.5,
    arrowwidth:=8,
    angledep:=Nil,
    angledep:=Nil,
    arrowposboucle:=[0.265,0.765],
    arrowposarete:=[0.25,0.75],
    ReCalc() ];

    Sommet1 = "T";

    optionsSommet1 = "[Color:=white, FillColor:=limegreen]";

    Sommet2 = "P";

    optionsSommet2 = "[Color:=black, FillColor:=gold]";

    Sommet3 = "P";

    optionsSommet3 = "[Color:=black, FillColor:=gold]";

    Sommet4 = "P";

    optionsSommet4 = "[Color:=black, FillColor:=gold]";

    Sommet5 = "T";

    optionsSommet5 = "[Color:=white, FillColor:=limegreen]";

    Sommet6 = "T";

    optionsSommet6 = "[Color:=white, FillColor:=limegreen]";

    Sommet7 = "T";

    optionsSommet7 = "[Color:=white, FillColor:=limegreen]";

    Sommet8 = "C";

    optionsSommet8 = "[Color:=white, FillColor:=navy]";

    Sommet9 = "C";

    optionsSommet9 = "[Color:=white, FillColor:=navy]";

    Sommet10 = "C";

    optionsSommet10 = "[Color:=white, FillColor:=navy]";

    Sommet11 = "T";

    optionsSommet11 = "[Color:=white, FillColor:=limegreen]";

    Sommet12 = "T";

    optionsSommet12 = "[Color:=white, FillColor:=limegreen]";

    Sommet13 = "T";

    optionsSommet13 = "[Color:=white, FillColor:=limegreen]";

    Sommet14 = "T";

    optionsSommet14 = "[Color:=white, FillColor:=limegreen]";

    Sommet15 = "T";

    optionsSommet15 = "[Color:=white, FillColor:=limegreen]";

    Sommet16 = "T";

    optionsSommet16 = "[Color:=white, FillColor:=limegreen]";

    Sommet17 = "T";

    optionsSommet17 = "[Color:=white, FillColor:=limegreen]";

    Sommet18 = "T";

    optionsSommet18 = "[Color:=white, FillColor:=limegreen]";

    Sommet19 = "T";

    optionsSommet19 = "[Color:=white, FillColor:=limegreen]";

    Sommet20 = "H";

    optionsSommet20 = "[Color:=white, FillColor:=crimson]";

    aux = "[LineStyle:=noline]";

    poids1_1 = "";

    auxOptionsAretes = "[LineStyle:=noline]";

    userOptions = "Liste(Set(rayon,0.25),Set(Width,thicklines),Set(FillColor,limegreen))";

    optionsArete8_20 = "[LineStyle:=noline]";

    optionsArete9_20 = "[LineStyle:=noline]";

    optionsArete10_20 = "[LineStyle:=noline]";

    optionsArete11_20 = "[LineStyle:=noline]";

    optionsArete12_20 = "[LineStyle:=noline]";

    optionsArete13_20 = "[LineStyle:=noline]";

Graph objet1 = [
   tMin:=-2.7,tMax:=4.2,DotScale:=1+i,
   Fenetre(-3-5*i, 15+4*i, 1+i),
   $Mat:=ReadData("GrapheJ92.txt", 1),
   PosSommets:=[0,
       i, exp(-5*i*pi/6), exp(-i*pi/6),
       exp(5*i*pi/6), -i, exp(i*pi/6),
       2*exp(5*i*pi/6), -2*i, 2*exp(i*pi/6),
       2*exp(-5*i*pi/6), 2*exp(-i*pi/6), 2*i,
       -2, 2*exp(-2*i*pi/3), 2*exp(-i*pi/3), 2, 2*exp(i*pi/3), 2*exp(2*i*pi/3),
       3-3*i],
   DefMatrice(Mat),
   DefLabels("T", "", "P", "", "P", "", "P", "", "T", "", "T", "", "T", "", "C", "", "C", "", "C", "",
       "T", "", "T", "", "T", "", "T", "", "T", "", "T", "", "T", "", "T", "", "T", "", "H", ""),
   DefOptionsAretes([8, 20, 9, 20, 10, 20, 11, 20, 12, 20, 13, 20], "[LineStyle:=noline]"),
   DefOptionsSommets(20, "[Color:=white, FillColor:=crimson]",
       [2, 3, 4], "[Color:=black, FillColor:=gold]",
       [8, 9, 10], "[Color:=white, FillColor:=navy]",
       [1, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19], "[Color:=white, FillColor:=limegreen]"),
   
   { Tracé des six arêtes non droite }
   Width:=thicklines,
   $P:=PosSommets[20],
   $P1:=PosSommets[8], $P2:=PosSommets[9], $P3:=PosSommets[10],
   $P4:=PosSommets[11], $P5:=PosSommets[12], $P6:=PosSommets[13],
   Path([P1, (2*P1+P)/3-0.8*exp(i*pi/3)*(P-P1), (P1+2*P)/3-0.8*exp(2*i*pi/3)*(P-P1), P, bezier,
      P2, move, ((P2+P)/2)-0.25*i*(P-P2), P, bezier,
      P3, move, ((P3+P)/2)+0.25*i*(P-P3), P, bezier,
      P4, move, ((P4+P)/2)-0.65*i*(P-P4), P, bezier,
      P5, move, P, line,
      P6, move, (2*P6+P)/3+0.65*exp(2*i*pi/3)*(P-P6), (P6+2*P)/3+0.65*exp(i*pi/3)*(P-P6), P, bezier]),
   
   { Tracé du reste du graphe }
   Dgraphe([rayon:=0.25, Width:=thicklines, FillColor:=limegreen]),
   
   { Affichage du polyèdre J92 }
   SetMatrix([10-i, 3, 3*i]),
   opacity:=0.75, StyleL:=Thicklines, LineCap:=round,
   HebesphenoRotondeT(Origin, vecI, A, B, C, D, E),
   Build3D(A, B, C, D, E),
   Display3D(),
   
   { Titre du graphique }
   SetMatrix([0, 1, i]),
   LabelStyle:=center, LabelSize:=Large,
   Label((Xmin+Xmax)/2+i*Ymax, "Graphe de l'hébesphéno-rotonde triangulaire ($\mathcal{J}_{92}$)"),
];
\end{texgraph}

et le fichier dans lequel j'ai enregistré ma matrice :
Code: Tout sélectionner
0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0
1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0
1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0
0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1
0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0


Le premier graphe m'amène à ma première suggestion : il serait intéressant de pouvoir créer des graphes dont les arêtes (pas forcément toutes) ne sont pas des segments de droites mais des courbes. Je pense que c'est peut être pas évident de bien gérer ce point, mais ca me semble quand même très important.

La deuxième chose serait la possibilité d'avoir un label à un sommet de couleur différente du trait du cercle qui l'entoure. Là je pense que c'est largement faisable!!

Voila : si j'ai d'autres trucs a dire à ce sujet, je vous ferai signe :lol:

En tout cas, ce modèle est très pratique!!
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Création de graphes

Messagepar P.Fradin » 14 Jan 2010 19:55

Salut Alphonse,

Supers graphiques!
Pour ta suggestion, cela fait un moment que j'y pense et j'en avais parlé à Joffrey: pouvoir modifier les arêtes par défaut. Cela va se faire...
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1837
Inscription: 29 Oct 2008 15:04

Re: Création de graphes

Messagepar Joffrey » 14 Jan 2010 19:57

Bonsoir Alphonse et aux autres,

Le premier graphe m'amène à ma première suggestion : il serait intéressant de pouvoir créer des graphes dont les arêtes (pas forcément toutes) ne sont pas des segments de droites mais des courbes. Je pense que c'est peut être pas évident de bien gérer ce point, mais ca me semble quand même très important.


C'est effectivement un bonne idée, on en avait déjà parlé avec Patrick. J'ai une petite idée sur la façon de faire, à suivre....

La deuxième chose serait la possibilité d'avoir un label à un sommet de couleur différente du trait du cercle qui l'entoure. Là je pense que c'est largement faisable!!


Là encore bonne idée, j'essaie de m'en occuper avant lundi.

Juste une remarque, j'ai collé ton premier code dans un document que j'ai nommé alphonse.teg, mais je n'obtiens pas de résultat.
De même dans un document latex, Qu'est ce que je fais mal??

Edit : Autant pour moi, je ne compilais pas comme il fallait :oops:

Merci et bonne soirée
L'homme en noir fuyait à travers le désert, et le Pistoléro le suivait ...
Joffrey
 
Messages: 286
Inscription: 16 Juil 2009 17:05
Localisation: Vichy

Re: Création de graphes

Messagepar Alphonse Capriani » 15 Jan 2010 18:34

P.Fradin a écrit:Supers graphiques!
Ouais!! J'aime bien le premier!!
Je vais en mettre un exemplaire dans les contribution diverses : ca me semble être un bon exemple pour l'utilisation de graphes.mac...

P.Fradin a écrit:Pour ta suggestion, cela fait un moment que j'y pense et j'en avais parlé à Joffrey: pouvoir modifier les arêtes par défaut. Cela va se faire...

Joffrey a écrit:C'est effectivement un bonne idée, on en avait déjà parlé avec Patrick. J'ai une petite idée sur la façon de faire, à suivre....


C'est parfait : je suis impatient de voire ce que ca va donner...
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Création de graphes

Messagepar P.Fradin » 15 Jan 2010 18:42

Alphonse Capriani a écrit:C'est parfait : je suis impatient de voire ce que ca va donner...


J'ai transmis le nouveau fichier à Joffrey pour qu'il puisse le tester et mettre la doc à jour. Il y a en plus:

1) Des options pour les sommets:

- circleColor = black; {couleur du cercle , option de sommet}
- labelColor = black; {couleur du label , option de sommet}
- backColor = white; {couleur du disque , option de sommet}

2) Des options pour les arêtes:

- auto := 0/1, permet de dessiner une arête par défaut (1) ou bien une courbe de Bézier (auto:=0), valeur par défaut: 1.
- dist := distance, distance des sommets au point de contrôle qui suit (ou précède). Nil par défaut
- distA := distance, distance du sommet A au point de contrôle qui suit, 1 par défaut. Si dist<>Nil alors distA prend la même valeur que dist.
- distB := distance, distance du sommet B au point de contrôle qui précède, 1 par défaut. Si dist<>Nil alors distB prend la même valeur que dist.
- angleA := angle en degrés, angle que fait la tangente à la courbe au sommet A par rapport à l'horizontal (90 par défaut).
- angleB := angle en degrés, angle que fait la tangente à la courbe au sommet B par rapport à l'horizontal (90 par défaut).

Exemple:

Code: Tout sélectionner
[
Fenetre(-3.25+3*i, 3.75-3*i, 1+i), Marges(0,0,0,0),
DefMatrice(
  [1,"&"], [1,"&"],
  [1,"$1-p$&"], [1,"$p$&"]),
PosSommets:=[-2,2],
DefLabels("$X$", "", "\no $2$", ""),
DefOptionsSommets(1,"[backColor:=pink]"),
DefOptionsAretes(
  [1,1], "[bouclescale:=0.75]&",
  [1,2], "[LineStyle:=dashed, auto:=0, angleA:=45, angleB:=-135, dist:=2]&",
  [2,1], "[Color:=firebrick,labelpos:=top,auto:=0, angleA:=-90, angleB:=-90]&",
  [2,2], "[bouclestyle:=circle, bouclescale:=1.25]&"),
Dgraphe([typeGraphe:=oriente, linesep:=1])
]


graphe4.png
graphe4.png (6.81 Kio) Consulté 10010 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1837
Inscription: 29 Oct 2008 15:04

Re: Création de graphes

Messagepar Alphonse Capriani » 15 Jan 2010 19:28

Euh ca m'a l'air bien tout ca, mais est-ce que tu pourrais nous dire comment est définie cette fameuse courbe de bézier entre deux sommets.

Je vois qu'il y une histoire de distance et d'angle, mais comme ca, je vois pas très bien comment ca marche.
La courbe de bézier en question n'est définie qu'avec 2 points de controles définis par la distance dist (ou distA, ...)? C'est flou pour moi !!!
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Re: Création de graphes

Messagepar P.Fradin » 15 Jan 2010 19:58

Une figure sera plus claire:

distAdistB.png
distAdistB.png (10.96 Kio) Consulté 9990 fois


A est le point de départ, B le point d'arrivée, le premier point de contrôle est A'=distA*exp(i*angleA*deg) et l'autre est B'=distB*exp(i*angleB*deg). C'est mieux?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1837
Inscription: 29 Oct 2008 15:04

Re: Création de graphes

Messagepar Alphonse Capriani » 18 Jan 2010 17:23

Salut Patrick, et merci pour cette illustration!!

Je me doutais que c'était un truc dans ce genre : maintenant je sui fixé.

Par contre, je crois que dans un de tes post précédent, tu as parlé d'une variable globale "dist". Finalement elle sert à quoi?
Ya Ba Da Ba Dooo!!!
Avatar de l’utilisateur
Alphonse Capriani
 
Messages: 576
Inscription: 18 Juil 2009 19:10
Localisation: East Harlem - NY

Précédent

Revenir vers Propositions - Discussions

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités

cron