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 29 30 31 32 33 34 35 36 37
|
/* POINT : structure => {x, y} */
POINT a,b; /* une droite AB */
POINT c,d; /* une droite horizontale CD */
int xxp_p_yyp; /* XX' + YY' */
double sqrt_comp; /* racine carré des composantes au carré */
double alpha; /* l'angle final */
/* l'image fait 1024 * 768 pixels */
/* prenons quelques droites */
POINT p2={140,186}, p3={712,645}, p4={904,574}, p5={907,516}, p6={307,96},p1={142,129};
/* stockage des pts des droites dans un tableau */
POINT* p_ref = new POINT[6];
p_ref[0] = p1; p_ref[1] = p2; p_ref[2] = p3; p_ref[3] = p4; p_ref[4] = p5; p_ref[5] = p6;
/* test stockage des résultats*/
FILE* f = fopen("c:\\angles.txt", "w");
/* prenons la deuxième droite */
a = p_ref[1];
b = p_ref[2];
// une droite HORIZONTALE quelconque à comparer avec la droite désignée plus haut
c.x = 2; c.y = 300;
d.x = 766; d.y = 300;
// ( XX' + YY' ) = ]U[ . ]V[ . cos(ALPHA)
xxp_p_yyp = ((b.x - a.x)*(d.x - c.x) + (b.y - a.y)*( d.y - c.y ));
sqrt_comp = (sqrt( ((b.x - a.x)*(b.x - a.x))+((d.x - c.x)*(d.x - c.x)) )) * (sqrt( ((b.y - a.y)*(b.y - a.y))+(( d.y - c.y )*( d.y - c.y )) ));
/* arc cos */
alpha = acos( xxp_p_yyp / sqrt_comp ); // l'ordi est en RADS
alpha = (alpha*180)/PI; // conversion en DG
//
/* fermeture fichier - test de stockage des résultats */
fclose(f); |
Partager