Publié par SFLPMEA le 08/12/2006
ROTATION.BAS source Qbasic version 4.5 (ou 1.1). Rotation d'un polygone régulier avec de nombreuses adaptations/ajustements possibles. Par SFLPMEA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
' - - - > ROTATION.BAS SCREEN 12: WINDOW SCREEN (640, 480)-(1, 1): CLS ' ***** Rotation de l'octogone (Angenoir) sans utiliser DRAW Xc% = 320 ' ***** Abscisse de l'ordonn‚e du centre (Modifiable) Yc% = 240 ' ***** Ordonn‚e (Modifiable) Rayon% = 200 ' ***** (Modifiable) Nb.S% = 8 ' ***** Nombre de sommets (Modifiable, minimum de 3) ' ***** Maximum 200 ou plus … essayer, mais scintillement... DIM Angle!(Nb.S%) ' ***** Angle 'trigo' des sommets FOR I% = 1 TO Nb.S%: Angle!(I%) = 400 / Nb.S% * (I% - 1) - 1: NEXT I% DIM Xs%(Nb.S%) ' ***** Abscisse de chaque sommet DIM Ys%(Nb.S%) ' ***** Ordonn‚e de chaque sommet Un.Grade! = 3.14159 / 200 ' ***** Valeur de un grade en radians FOR Nb.Tour% = 1 TO 2 ' ***** nombre de tours modifiable FOR Angle! = 1 TO 400 CLS FOR S% = 1 TO Nb.S% Angle!(S%) = Angle!(S%) - 1 ' ***** avec + 1, Rotation Inverse Sinus! = SIN(Un.Grade! * Angle!(S%)) Cosinus! = COS(Un.Grade! * Angle!(S%)) Xs%(S%) = Xc% + Rayon% * Cosinus! Ys%(S%) = Yc% + Rayon% * Sinus! IF S% > 1 THEN LINE (Xs%(S%), Ys%(S%))-(Xs%(S% - 1), Ys%(S% - 1)), 15 ELSE LINE (Xs%(1), Ys%(1))-(Xs%(Nb.S%), Ys%(Nb.S%)), 15 END IF LINE (Xs%(S%), Ys%(S%))-(Xc%, Yc%), 10 NEXT S% T! = TIMER DO LOOP UNTIL TIMER >= T! + .01 ' ***** Vitesse modifiable NEXT Angle! NEXT Nb.Tour% END