papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Théorème d’Al-Kashi ou Loi des sinus Dim 29 Mar 2020 - 7:38 | |
| - Code:
-
rem ============================================================================ rem TRIGONOMETRIE rem Application du théorème d’Al-Kashi rem appélé aussi loi des cosinus ou théorème de Pythagore généralisé rem ============================================================================ rem On appelle formule d’Al-Kashi, ou loi des cosinus, ou encore théorème de rem Pythagore généralisé l’égalité suivante, valable dans tout triangle ABC, rem qui relie la longueur des côtés en utilisant le cosinus d’un des angles rem du triangle : rem ____________________________________ rem | | rem | a² = b² + c² - 2 * b * c * cos(Â) | rem |____________________________________| rem rem ============================================================================
label move dim AB, AC, AD, CB, BD, CD, ACB, ACD, ADB, ADC, BAD, CAB, CAD, cosinus dim ordonnees,abscisses dim ax,ay,bx,by,cx,cy,dx,dy dim xsouris,ysouris dim t$
' ------------------------------------------------------------------------------ ordonnees = 200 abscisses = 200
Ax = 400 : Ay = 100 Bx = Ax : By = ordonnees Cx = abscisses: Cy = ordonnees Dx = 700 : Dy = ordonnees CD = Dx - Cx ' ------------------------------------------------------------------------------ width 0,840 : height 0,720 caption 0,"Trigonométrie : Formule d'al-Kashi ou loi des cosinus ou encore théorème de Pythagore généralisé" top 0,(screen_y - height_client(0))/2 : left 0,(screen_x - width_client(0))/2 color 0,245,235,220 : font_color 0,0,0,250 font_bold 0 : font_name 0,"DejaVu Sans Mono" : font_size 0,9
picture 10 : top 10,120 : left 10,10 : width 10,800 : height 10,200 color 10,245,235,220 : 2d_target_is 10 : font_size 10,10
alpha 15 : top 15,30 : left 15,20 : font_name 15,"DejaVu Dans Mono" font_bold 15 : font_size 15,12 : font_color 15,255,0,0 caption 15,"Application du Théorème d'Al-Kashi. Papydall Mars 2020"
alpha 20 : top 20,60 : left 20,20 : font_name 20,"DejaVu Dans Mono" font_bold 20 : font_size 20,12 : font_color 20,0,150,0 caption 20, "Déplacer le sommet A du triangle avec la souris"
alpha 30 : top 30,610 : left 30,10 : font_name 30,"DejaVu Dans Mono" font_bold 30 : font_size 30,12 : font_color 30,0,150,0
t$ = "Loi des cosinus (théorème d'Al-Kashi) également appelé théorème de Pythagore généralisé"+ chr$(13) t$ = t$ + string$(50," ") + "c² = a² + b² - 2 * a * b * cos(angle)" + chr$(13) t$ = t$ + "Je me suis inspiré d'un programme en Free Basic de Gabriel LaFrenière" caption 30,t$ print_locate 200,320 : print "C" : print_locate 700,320 : print "D" print_locate 600,20 : print "Souris :" print_locate 700,20 : print "Sommet A :"
Quadrillage() Calcul()
on_mouse_move 10,move
end rem ============================================================================ move: off_mouse_move 10 xsouris = mouse_x_position(10) : ysouris = mouse_y_position(10) xSouris = xSouris - abscisses ySouris = ordonnees - ySouris Ax = xSouris + abscisses Bx = Ax Ay = ordonnees - ySouris calcul() on_mouse_move 10,move return rem ============================================================================ SUB Quadrillage() dim_local j 2d_target_is 10 : 2d_pen_color 250,250,250 for j = 0 to ordonnees - 100 step 100 : ' quadrillage. 2d_line 0,j,800,j next j for j = 0 to 700 step 100 2d_line j,0,j,400 next j 2d_pen_color 0,0,0 2d_line 0,200,800,200 : ' axe des abscisses 2d_line 200,200,200,0 : ' axe des ordonnees END_SUB rem ============================================================================ SUB Calcul() dim_local epsilon epsilon = 1E-16 AB = ordonnees - Ay : if ab <= 0 then ab = 2 CB = abs(Bx - abscisses) : if cb = 0 then cb = epsilon BD = abs(Dx - Bx) : if bd = 0 then bd = epsilon AC = sqr(AB * AB + CB * CB) AD = sqr(AB * AB + BD * BD) ACB = atn(AB / CB) ADB = atn(AB / BD) BAD = atn(BD / AB) CAB = atn(CB / AB)
' ***************** LOI DES COSINUS, OU THÉORÈME D'AL KASHI ********************
ACD = acos((CD*CD + AC*AC - AD*AD) / (2 * CD * AC)) ADC = acos((CD*CD + AD*AD - AC*AC) / (2 * CD * AD)) CAD = acos((AD*AD + AC*AC - CD*CD) / (2 * AD * AC)) print_locate 600,40 : print "x = " + str$(xsouris) + " " : ' coordonnées du sommet. print_locate 600,60 : print "y = " + str$(ysouris) + " "
print_locate 700,40 : print "x = " + str$(Ax-abscisses) + " " print_locate 700,60 : print "y = " + str$(ordonnees-Ay) + " " print_locate 500,20 : print "AB = " + str$(int(ab)) + " " print_locate 500,40 : print "BD = " + str$(int(bd)) + " " print_locate 500,60 : print "CB = " + str$(int(cb)) + " " print_locate 500,80 : print "CD = " + str$(int(cd)) + " " print_locate 010,360 : print "AC = " + str$(round(ac,3)) print_locate 200,360 : print "AC = SQR(AB * AB + CB * CB) ... théorème de Pythagore" print_locate 010,380 : print "AD = " + str$(round(ad,3)) print_locate 200,380 : print "AD = AB / SIN(ADB) AD = AB / COS(BAD) AD = BD / SIN(BAD)" print_locate 010,400 : print "AB = " + str$(round(CB * TAN(ACB),3)) + " " print_locate 200,400 : print "AB = CB * TAN(ACB) AB = BD * TAN(ADC) AB = AD * SIN(ADB)" print_locate 010,420 : print "BD = " + str$(round(AB * TAN(BAD),3)) print_locate 200,420 : print "BD = AB * TAN(BAD) BD = AD * SIN(BAD) BD = AD * COS(ADB)" print_locate 010,450 : print "ADC = " + str$(round(ADC * 180 / pi,5)) + "°" + " " print_locate 200,450 : print "ADC = ACOS((CD² + AD² - AC²) / (2 * CD * AD)) ...Loi des cosinus : Formule d'Al-Kashi." print_locate 010,470 : print "CAD = " + str$(round(CAD * 180 / pi,5)) + "°" + " " print_locate 200,470 : print "CAD = ACOS((AD² + AC² - CD²) / (2 * AD * AC))" print_locate 010,490 : print "ACD = " + str$(round(ACD * 180 / pi,5)) + "°" + " " print_locate 200,490 : print "ACD = ACOS((CD² + AC² - AD²) / (2 * CD * AC))" cosinus = (CD*CD + AC*AC - AD*AD) / (2 * CD * AC) : ' calcul via le cosinus. if cosinus = 0 then cosinus = epsilon ACD = atn(sqr(1 - cosinus * cosinus) / cosinus) print_locate 010,520 : print "ACB = " + str$(round(ACB * 180 / pi,5)) + "°" + " " print_locate 200,520 : print "ACB = ATN(AB / CB) ACB = ASIN(AB / AC) ACB = ACOS(CB / AC)" print_locate 010,540 : print "ADB = " + str$(round(ADB * 180 / pi,5)) + "°" + " " print_locate 200,540 : print "ADB = ATN(AB / BD) ADB = ASIN(AB / AD) ADB = ACOS(BD / AD)" print_locate 010,560 : print "BAD = " + str$(round(BAD * 180 / pi,5)) print_locate 200,560 : print "BAD = ATN(BD / AB) BAD = ASIN(BD / AD) BAD = ACOS(AB / AD)" print_locate 010,580 : print "CAB = " + str$(round(CAB * 180 / pi,5)) print_locate 200,580 : print "CAB = ATN(CB / AB) CAB = ASIN(CB / AC) CAB = ACOS(AB / AC)" color 10,245,235,220 : 2d_pen_color 255,0,0 2d_line Ax,Ay,Cx,Cy : 2d_line Ax,Ay,Dx,Dy : 2d_line Cx,Cy,Dx,Dy 2d_flood (Cx+Dx)/2, ordonnees -1, 255,255,255 2d_line Ax,Ay,Bx,By Quadrillage() 2d_line 0,199,800,199 print_target_is 10 : 2d_fill_color 245,235,220 print_locate ax-5,ay-15 : print "A" print_target_is 0 print_locate 0,320 : print string$(150," ") print_locate ax+5,320 : print "B" print_locate 200,320 : print "C" print_locate 700,320 : print "D" print_target_is 0 END_SUB rem ============================================================================ FNC Round(x,n) dim_local nbc nbc = power(10,n) : ' nombre de chiffres après la virgule result int(x*nbc+0.5)/nbc END_FNC rem ============================================================================
- Spoiler:
| |
|