Mouvement parabolique

GW-Basic, utilisé par PC-Basic

Programme avec Graphique et Texte

PC-BASIC

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