Mouvement parabolique
GW-Basic, utilisé par PC-Basic
Programme avec Graphique et Texte
Le programme PROJ.BAS (Mouvement d'un projectile) nous a initiés à la physique du mouvement des projectiles, en modélisant une balle lancée sur l'écran.
Mais pourquoi se limiter aux formules physiques du mouvement des projectiles ?
Toute équation quadratique, de forme générale y = ax² + bx + C, se représente graphiquement sous forme de parabole, qui peut être définie comme la trajectoire d'un objet à l'écran.
Ces trajectoires paraboliques peuvent être ajustées en modifiant les coefficients a (le coefficient directeur), b (le terme linéaire) et c (le terme constant).
Par exemple, si l'on modifie le signe de a, la parabole s'inverse et s'ouvre dans la direction opposée. Si l'on augmente la valeur de c, la parabole s'élève sur le plan de coordonnées (ou s'abaisse sur l'écran, ce qui, rappelons-le, inverse l'orientation de l'axe y par rapport au plan cartésien).
Le programme ci-dessous, PARAB.BAS, vous permet d'expérimenter le mouvement parabolique ; l'ajustement des coefficients quadratiques et de l'angle de lancement donne une trajectoire unique pour la balle.
Après avoir déclaré et initialisé certaines variables au préalable, une instruction INKEY$ est utilisée pour obtenir les préférences quadratiques de l'utilisateur. Lorsque la barre d'espace est enfoncée, la balle se déplace sur une trajectoire définie par l'équation quadratique (voir lignes 33 à 60).
Tout comme nous ne sommes pas limités par les équations du mouvement des projectiles, nous ne sommes pas non plus limités par le mouvement parabolique : modifiez PARAB.BAS pour autoriser le mouvement grâce à différents types d'équations, telles que cubique, exponentielle, logarithmique ou toute autre possibilité.
PARAB.BAS
10 SCREEN 9:CLS:KEY OFF:COLOR
15,0
11 X=-99:A=.01:B=-.6:C=200 'Starting constants for quadratic
12 THETA=45*3.14159/180:ANGLE=45
'Starting angle
15 I$=INKEY$
16 LOCATE 1,1:PRINT"Quadratic: ";A;"X^2+";B;"X+";C:PRINT"Launch
angle: ";ANGLE
17 LOCATE 5,1:PRINT"Press +/- to adjust A value": PRINT"Press
O/P to adjust B value":PRINT"Press Q/W to adjust launch angle":PRINT"Press <SPACE>
to launch ball":PRINT"Press <ESC> to quit": PRINT"Oh, and press D/F to adjust
the C value"
18 IF I$=CHR$(27) THEN CLS:END
19 IF I$="+" THEN A=A+.01
20 IF I$="-" THEN A=A-.01
21 IF I$="O" OR I$="o" THEN B=B-.1
22 IF I$="P"
OR I$="p" THEN B=B+.1
23 IF I$=" " THEN GOTO 33
24 IF A<=0 THEN A=.01
25 IF I$="Q" OR I$="q" THEN ANGLE=ANGLE-1
26 IF I$="W" OR I$="w" THEN
ANGLE=ANGLE+1
27 IF I$="D" OR I$="d" THEN C=C-10
28 IF I$="F" OR I$="f"
THEN C=C+10
31 THETA=ANGLE*3.14159/180
32 CIRCLE(COS(THETA)*X+C,SIN(THETA)*A*XA2+BX+C),
15,15:FOR PAUSE=1 TO 10:NEXT PAUSE:CIRCLE(COS (THETA)*X+C,SIN(THETA)*A*XA2+BX+C),15,0:GOTO
15
33 YY=SIN(THETA)*A*XA2+BX+C
34 XX=COS(THETA)*X+C
35 CIRCLE(XX,YY),15,15
36 FOR PAUSE=1 TO 50:NEXT PAUSE
37 CLS
38 LOCATE 1,1:PRINT"Quadratic:
";A;"X^2+";B;"X+";C
39 LOCATE 2,1:PRINT"Launch angle: ";ANGLE
40 X=X+1
50 IF YY>330 THEN GOTO 70
51 IF XX>620 THEN GOTO 70
52 IF XX<10 THEN GOTO
70
53 IF YY<10 THEN GOTO 70
55 IF INKEY$=CHR$(27) THEN 70
60 GOTO 33
70 CLS:INPUT"Another (Type 1 for Yes or 2 for No)";ANOTHER
80 IF ANOTHER=1
THEN CLS:GOTO 10