JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Fabriquer un mortier: 1) la théorie Lun 3 Oct 2011 - 0:09 | |
| Trajectoire du projectile en fonction de sa vitesse initiale et de l'inclinaison du canon: - Code:
-
DIM wp, x, y, pi, v0, a0, x0, y0, ym, g, ca, ta, v02, ca2, lc, hc, r, v, b, xa, ya LABEL Tir
WIDTH 0, 1100: HEIGHT 0, 700: FONT_SIZE 0, 10: FONT_BOLD 0 COLOR 0, 200,255,255 wp = 1080 PICTURE 1: WIDTH 1, wp: HEIGHT 1, 530 ALPHA 2: TOP 2, 540: LEFT 2, 20 CAPTION 2, "Angle de tir (degrés):" SPIN 3: LEFT 3, 170: TOP 3, 540: WIDTH 3, 60 MIN 3, 0: MAX 3, 89: POSITION 3, 45 ALPHA 4: TOP 4, 570: LEFT 4, 20 CAPTION 4, "Vitesse initiale (m/s):" SPIN 5: LEFT 5, 170: TOP 5, 570: WIDTH 5, 60 MIN 5, 0: MAX 5, 500: POSITION 5, 100 BUTTON 6: LEFT 6, 250: TOP 6, 555: CAPTION 6, "FEU !" ON_CLICK 6, Tir pi = 4*ATN(1) x0 = 20 y0 = 500 g = 9.81: ' accélération de la pesanteur (m/s²) 2D_TARGET_IS 1 b = 255: r = 0: v = 0 FOR y = 0 TO 500 2D_PEN_COLOR r, v, b: 2D_LINE 0,y,wp,y r = r + .5: IF r > 255 THEN r = 255 v = v + 1: IF v > 255 THEN v = 255 NEXT y 2D_PEN_COLOR 0,0,0 ' axes x et y 2D_LINE 0,y0,x0+wp,y0 lc = 30: hc = 11 a0 = POSITION(3)*pi/180: ' angle de lancement ca = COS(a0) 2D_PEN_WIDTH hc: 2D_LINE x0,y0,x0+lc*ca,y0-lc*SIN(a0) 2D_CIRCLE x0,y0,6 2D_PEN_WIDTH 1 END
Tir: CLS b = 255: r = 0: v = 0: ym = 0 FOR y = 0 TO 500 2D_PEN_COLOR r, v, b: 2D_LINE 0,y,wp,y r = r + .5: IF r > 255 THEN r = 255 v = v + 1: IF v > 255 THEN v = 255 NEXT y 2D_PEN_COLOR 0,0,0 ' axes x et y 2D_LINE 0,y0,x0+wp,y0 v0 = POSITION(5): ' vitesse initiale a0 = POSITION(3)*pi/180: ' angle de lancement ca = COS(a0) ta = TAN(a0) v02 = v0*v0 ca2 = ca * ca 2D_PEN_WIDTH hc: 2D_LINE x0,y0,x0+lc*ca,y0-lc*SIN(a0) 2D_CIRCLE x0,y0,6 2D_PEN_WIDTH 1 FOR x = lc-5 TO 40000 step 5 y = -1*g*x*x/(2*v02*ca2) + x*ta IF y > ym THEN ym = y IF y < 0 THEN EXIT_FOR xa = x0 + x: ya = y0-y IF xa < wp AND ya > 0 THEN 2D_CIRCLE x0+x, y0-y, 2: WAIT 10 NEXT x PRINT_TARGET_IS 1: PRINT_LOCATE x0+x-10,y0-20 FONT_COLOR 1,255,0,0: PRINT "BOUM !": FONT_COLOR 1,0,0,0 xa = x0 + x - 20: if xa > (wp-50) THEN xa = wp-50 PRINT_LOCATE xa,y0+3: PRINT STR$(INT(x))+" m." PRINT_LOCATE xa-25,y0+18: PRINT "Alt.max " + STR$(INT(ym))+" m." RETURN Pour la partie 2) Réalisation pratique, je m'en remets à votre imagination, mon jardin n'étant pas assez grand pour procéder à des essais valables. | |
|