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: Tout sélectionner
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 !