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
|
// soit P1(x1,y1), P2(x2,y2), P3(x3,y3)
// l'angle se situe au niveau de de P3
//a cause des divisions plus loins il y a ces conditions.
if(x2-x3 == 0)return;
if(y2-y3 == 0)return;
// on calcule le coeficient angulaire
double CA = (y2-y3)/(x2-x3);
// p est le reste de l'eqiuation perpendiculaire a la droite(passant par P2 et P3)et et passant par P1
double p = y1 -(1/CA)*x1;
// P4 point qui se situe sur la droite passant par p3 et p2 et qui forme alors un angle droit
x4 = (p+CA*x2)/(CA-1/CA);
y4 = (1/CA)*x4+p;
// on calcule l'opose et l'ypothenuse
double opose = sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4));
double hypot = sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
// on trouve l'angle
double angle = asin(opose/hypot);
cout << angle << endl; |