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 :
Bien-sûr j'ai fait les calculs à la main. Le résultat :
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;
Soit les calculs sont faux, soit il y a un probème avec les arrondis liés aux double, soit je sais pas !
Partager