Publié par AngeNoir le 10/12/2006
ROTATIO2.BAS est la suite de ROTATION.BAS source QuickBasic 4.5 Description: Rotation d'un groupe d'octogone. Celui-ci créé par Ange.°.Noir
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
' - - - > ROTATIO2.BAS
SCREEN 12: WINDOW SCREEN (640, 480)-(1, 1): CLS
' ***** Rotation de l'octogone+mini-octogone (SFLPMEA) avec DRAW
Eto = 23: Eto1 = 203: Vit = 1: Vite = 4
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
Eto = Eto + Vit
IF Eto > 360 THEN Eto = 1
Eto9 = Eto9 - Vite
IF Eto9 < 0 THEN Eto9 = 359
DRAW "bm320,239;TA=" + VARPTR$(Eto)
DRAW "C9;R185;TA=" + VARPTR$(Eto9)
DRAW "C14;U60NL25NR25D60;D60NL25NR25U60;L60NU25ND25R60;R60NU25ND25L60"
DRAW "E43NF17NH17G43;F43NE17NG17H43;G43NF17NH17E43;H43NE17NG17F43"
Eto1 = Eto1 + Vit
IF Eto1 > 360 THEN Eto1 = 1
DRAW "bm320,239;TA=" + VARPTR$(Eto1)
DRAW "C14;R185;TA=" + VARPTR$(Eto9)
DRAW "C9;U60NL25NR25D60;D60NL25NR25U60;L60NU25ND25R60;R60NU25ND25L60"
DRAW "E43NF17NH17G43;F43NE17NG17H43;G43NF17NH17E43;H43NE17NG17F43"
FOR S% = 1 TO Nb.S%
Angle!(S%) = Angle!(S%) - 1.11' ***** 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
A$ = INKEY$
IF A$ = CHR$(27) THEN END
LOOP UNTIL TIMER >= T! + .01 ' ***** Vitesse modifiable
NEXT Angle!
NEXT Nb.Tour%
END