Bonjour,

J'essaie de dessiner les fleches d'un graphe orienté. Pour ce faire, je calcule le point d'intersection entre le cercle représentant le noeud "tête" et la droite représentant l'arc.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
      //equation de la droite :
      //y = a * x + b
      double a = (yq - yt) / (xq - xt);
      double b = yq - a * xq;
 
      //equation du cercle
      //(x - xt)² + (y - yt)² = rt²
 
      //Points d'intersection
      double A = 1 + a * a;
      double B = - 2 * xt + 2 * a * b - 2 * a * yt;
      double C = xt * xt + b * b - 2 * b * yt + yt * yt - rt * rt;
      double delta = B * B - 4 * A * C;
      double x0 = (- B - sqrt(delta)) / 2 * A;
      double x1 = (- B + sqrt(delta)) / 2 * A;
      double y0 = a * x0 + b;
      double y1 = a * x1 + b;
Bien-sûr j'ai fait les calculs à la main. Le résultat :



Soit les calculs sont faux, soit il y a un probème avec les arrondis liés aux double, soit je sais pas !