papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Coordonnées cartésiennes de l’intersection de 2 droites Mar 10 Déc 2019 - 4:05 | |
| Dans le cadre du codage d’un programme personnel, j’étais confronté à déterminer les coordonnées cartésiennes de l’intersection de deux droites passant chacune par deux points dont on connait les coordonnées. Mission accomplie. Je partage une petite démo pour vous en faire profiter. - Code:
-
rem ============================================================================ rem Calculer les coordonnées de l’intersection de deux droites rem ============================================================================
dim x1,y1,x2,y2,x3,y3,x4,y4 : ' coordonnées des deux droites dim x,y : ' coordonnées de la section width 0,700 picture 10 : full_space 10 : 2d_target_is 10 : print_target_is 10 font_name 10,"arial black" caption 0,"Calcul de l'intersection de deux droites" rem ============================================================================ rem Exemple x1 = 4 : y1 = 0 : ' 1er point de la 1ère droite x2 = 6 : y2 = 10 : ' second point de la 1ère droite x3 = 0 : y3 = 3 : ' 1er point de la seconde droite x4 = 10 : y4 = 7 : ' second point de la seconde droite
Tracer(x1,y1, x2,y2, x3,y3, x4,y4) Intersection(x1,y1, x2,y2, x3,y3, x4,y4)
end rem ============================================================================ ' Tracer les deux droites SUB Tracer(x1,y1, x2,y2, x3,y3, x4,y4) dim_local xc,yc ,unite ,i,x xc = 200 : yc = 200 : unite = 20 x = -10 2d_pen_dot : ' tracé avec séries de points for i = 20 to 2*xc step unite 2d_line i,400,i,10 : x = x+1 print_locate i-5,xc : print x next i x = 10 for i = 20 to 2*yc step unite 2d_line 0,i,400,i : x = x-1 print_locate xc-15,i : if x <> 0 then print x next i 2d_pen_solid : ' tracé avec trait plein 2d_line xc,0,xc,2*yc : 2d_line 0,yc,2*xc,yc : ' les axes ' Tracer les deux droites 2d_pen_color 255,0,0 : 2d_line xc+unite*x1,yc-unite*y1, xc+unite*x2,yc-unite*y2 2d_pen_color 0,0,255 : 2d_line xc+unite*x3,yc-unite*y3, xc+unite*x4,yc-unite*y4 END_SUB rem ============================================================================ ' Déterminer les coordonnées de l'intersection de deux droites dont les coordonnées ' sont passées en paramètres ' x1,y1 : coordonnées du 1er points de la 1ère droite ' x2,y2 : coordonnées du second point de la 1ère droite ' x3,y3 : coordonnées du 1er point de la seconde droite ' x4,y4 : coordonnées du second point de la seconde droite ' x et y sont les coordonnées cherchées SUB Intersection(x1,y1, x2,y2, x3,y3, x4,y4) dim_local a,b,c a = x1 * y2 - y1 * x2 b = x3 * y4 - y3 * x4 c = (x1-x2) * (y3-y4) - (y1-y2) * (x3-x4) x = (a * (x3 - x4) - (x1 - x2) * b) / c y = (a * (y3 - y4) - (y1 - y2) * b) / c print_locate 420,20 : print "Les coordonnées de l'intersection sont" print_locate 420,40 : print " x = " + str$(x) print_locate 420,60 : print " y = " + str$(y) 2d_fill_color 0,255,0 : 2d_circle 200+20*x,200-20*y,4 END_SUB rem ============================================================================
| |
|