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 :
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 !
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);
Merci d'avance !
Partager