x1, y1, x2, y2 x3 y3 coef_directeur1 = (y2-y1)/(x2-x1); ;;;y1 = coef_directeur1*x1 + b1 b1 = y1 - coef_directeur1*x1; coef_directeur2 = (y3-y2)/(x3-x1); ;;;y1 = coef_directeur1*x1 + b1 b2 = y2 - coef_directeur1*x2; Double Angle = Math.Atan2(y2-y1, x2-x1) - Math.Atan2(y4-y3,x4-x3); dx1 = x2-x1; dy1 = y2-y1; dx2 = x4-x3; dy2 = y4-y3; d = dx1*dx2 + dy1*dy2; // dot product of the 2 vectors l2 = (dx1*dx1+dy1*dy1)*(dx2*dx2+dy2*dy2) // product of the squared lengths angle = acos(d/sqrt(l2)); ax + by + c = 0 a1x + b1y + c = 0 tan phi = ab1-a1b / aa1+bb1 ;;;;;;;;;;;;;;;;;;;;;;; (3 1) (14 1) 1 - 1 / 14 - 3 = 0 (y2-y1) = 0 (14 1) (14 27) 14 - 14 / 27-1 (y3-y2) = 0 pas de deplacement 10 hauteur_max = hauteur - i*pas_deplacement 25+20 = 45 4 * 20 + 5 * 25 = 205 distance_bord = 10.45/sqrt(2) on veut 10 donc 10x sqrt(2)=14.142 (hauteur - 14.142- hauteur_max - 10 ) / 45 =( 285.45 - 34.142) / 45 = 5.58 soit nb_slot = 5 4 * 20 + 5 * 25 = 205 d = (285.45 - 205 ) / 2 = 40.22 if( d > 35 then nb_slot = nb_slot + 1 5 * 20 + 6 * 25 = 250 d = (285.45 - 250 ) / 2 = 17.725 17.725 + 250 = 267.725 alors que le max est 285.84 - 10 - 14.142 = 261.698 261.698 = 6 * 25 + 5 *delta delta = 261.7 - 150 - 10 / 5 = 20.34 ) //////////////////////////////////////////////////////////////////// autre méthode 2 droite dont on va calculer le points d'intersection p1(750 271.32) p2(976.31 0) p3(715 285.45) p4(715 0) coef_directeur1 = (y2-y1)/(x2-x1); ;;;y1 = coef_directeur1*x1 + b1 b1 = y1 - coef_directeur1*x1; coef_directeur2 = (y4-y3)/(x4-x3); ;;;y1 = coef_directeur1*x1 + b1 b2 = y2 - coef_directeur1*x2; 0-271.32 = -271.31 976.31-750= 226.31 m = -1.198 271.32 = -750 * (-1.198) x + 0y= 715