Bonsoir à tous,

Je tente de développer en javascript le calcul des coordonnées des deux points d'une tangente commune à deux cercles. Je suis absolument nul en math, je me suis donc aidé de se site : http://www.lucidarme.me/?p=2199

J'ai reproduit les formules :

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
19
20
21
22
23
24
25
26
27
28
 
var RA = 100;
var RB = 100;
 
var X_A = 400;
var Y_A = 200;
 
var X_B = 700;
var Y_B = 200;
 
 
var D  = Math.sqrt(((X_B - X_A) * (X_B - X_A)) + ((Y_B - Y_A) * (Y_B - Y_A)));
var L  = Math.sqrt((D * D) - ((RA - RB) * (RA - RB)));
var R  = Math.sqrt((L*L) + (RB * RB));
var S  = Math.sqrt((D + RA + R) * (D + RA - R) * (D - RA + R) * (-D + RA + R)) / 4;
 
x1 = ((X_A + X_B) / 2) + (((X_B - X_A) - ((RA * RA) - (R * R))) / (2 * (D * D))) + ((2 * ((Y_A - Y_B) / (D * D))) * S);
y1 = ((Y_A + Y_B) / 2) + (((Y_B - Y_A) - ((RA * RA) - (R * R))) / (2 * (D * D))) + ((2 * ((X_A - X_B) / (D * D))) * S);
 
 
 
var D  = Math.sqrt(((X_B - X_A) * (X_B - X_A)) + ((Y_B - Y_A) * (Y_B - Y_A)));
var L  = Math.sqrt((D * D) - ((RB - RA) * (RB - RA)));
var R  = Math.sqrt((L*L) + (RA * RA));
var S  = Math.sqrt((D + RB + R) * (D + RB - R) * (D - RB + R) * (-D + RB + R)) / 4;
 
x2 = ((X_B + X_A) / 2) + (((X_A - X_B) - ((RB * RB) - (R * R))) / (2 * (D * D))) + ((2 * ((Y_B - Y_A) / (D * D))) * S);
y2 = ((Y_B + Y_A) / 2) + (((Y_A - Y_B) - ((RB * RB) - (R * R))) / (2 * (D * D))) + ((2 * ((X_B - X_A) / (D * D))) * S);
Malheureusement je n'arrive à rien. Les deux points se retrouvent l'un au dessus de l'autre entre les deux cercles. Je désespère de trouver la solution !

Merci d'avance !