GFA-BASIC WIN300NAIPaxe_xace_yRayonB_Angleaxe_yAngleae_xe_yax_xPoid_xPoid_ybranchesRDtestab_angleIhpDAex_ new_poid_x new_poid_ykzone1_azone1_bzone_1_azone2_azone2_bzone1Vitessebgryxrap1rap2rap3rap4r1g1b1r2g2b2r3g3b3r4g4b4y2x2y1x1lxlyraprrggbbz2z1vxxyyRayon2Rayon1tllrdtrdaaNB.scrxscryBranchesbrancheiDCDLGBufMemDcb_zoom1bufzoomaf_zoom b_zoom_x1 b_zoom_x2 b_zoom_x4bmpx1y1x2y2x3y3x4y4chxyperirienrimBMPIMLXLYBITPPLignesfL_O L_OFFSET_4gbvvvWSE_XE_YMvtTraceNCNDbitpp4ڮ @NENF fficarvc| NGDAsucNH SAUVER_BMP_PALFUNCTIONNINJNK sauver_bmp_o,.NLNM Afficher_roueVSYNCaffaffaaplot_antialiasinglaapaadaaAfficher_roue_aa circle_aa Camenbert_aa sauver_bmpINITIALISATIONtotoNNNONPNQNRNSNT0angletaille_roue_dispositifNUDECRNVNWDTMKAPRtp5$6$6e$YgYg Y@@Yg@g@YZYY88(@hYfZY8 (Y008 0@ 8@8! Ye. Yep :0Z5gYg6gYgYYYZMouvement PerpetuelIYY56$4P@:(((@ (@( :`*@h@?/@?W YPlS$Y45Z<Y@Y$YgYg ZYgYgYgYgYYYYY56$4:0A]'B-GAuteur : Nicolas Rey (2001)-Gmail : scalion@free.fr-G'----------------------------------------GTouches | Fonction-G'--------|--------------------------------G' - + | Changer le nombre de branches-G / * | Change la vitessem-G| Quitter -G/ M | Crer les fichiers BMP de l'animation-G A | Aide-G( W | Change la taille de la fentre-G T | Tracage du mouvement`T Y0$M@;$ZFabriquer l'animation pour|Y branches|Y imagesZOui|NonH$pYp@{Gz(:YYtYtY(: Yt|86@ YYYOYO$xxZC:\IM000Yt\.BMPq:,Yx5t+- +I@YP$@YO$:0 , Z<=_X,=_Y=_Y/2,==/2 =/2=/7=8'RD=3*Rayon/Branches%'Rayondispositif=2*PI/=PI=PI+/2'PI/3=2*PI-/2'PI+PI/2=2*PI8=@(,,,)h=8+12DIM()'AngledesdispositifsFOR=1TO0=(+*8=+SIN(0)*,@= +COS(0)*LINE, ,8,@IF8<()=0ELSE()=PIENDIFNEXT0OPENW#1,_X/2-/2,_Y/2-/2,,,0TITLEW#1,"MouvementPerpetuel"GET0,0,_X,_Y,4=64DOPEEKEVENT(=(+/WHILE(>2*PI(=(-2*PIWEND=INKEY$IF="*"=MAX(2,/1.1)ENDIFIF="/"=MIN(512,*1.1)ENDIFIFUCASE$()="W"=MOD(SUCC(),4)FREEBMP4CLOSEW#1=/(2^),==/2 =/2OPENW#1,/2-/2,/2-/2,,,0GET0,0,_X,_Y,40ENDIFIFUCASE$()="A"CLSSETFONTSYSTEM_FIXED_FONTPRINT"Auteur:NicolasRey(2001)"PRINT"mail:scalion@free.fr"PRINT"---------------------------------------"PRINT"Touches|Fonction"PRINT"--------|------------------------------"PRINT"-+|Changerlenombredebranches"PRINT"/*|Changelavitesse"PRINT"|Quitter"PRINT"M|CrerlesfichiersBMPdel'animation"PRINT"A|Aide"PRINT"W|Changelatailledelafentre"PRINT"T|Tracagedumouvement"DOEXITIFLEN(INKEY$)>0LOOPENDIFIFUCASE$()="T"=NOT()ENDIFIFUCASE$()="M"=MAX(2,INT())ALERT1,"Fabriquerl'animationpour|"+STR$()+"branches|"+STR$()+"images",1,"Oui|Non",pIFp=1(=2*PI-0.01FORt=0TO(=t*/ IFt>0 =+8+22GET0,0,PRED(),PRED(),x'axe_x-t,axe_y-t,axe_x+t,axe_y+t,BMPIM%,x,"C:\IM"+RIGHT$("00"+STR$(t),3)+".BMP"FREEBMPxENDIFNEXTtENDIFENDIFIF="+"OR="-"IF="+"=MIN(50,SUCC())ELSE=MAX(2,PRED())ENDIF'RD=3*Rayon/Branches%'Rayondispositif0ENDIFEXITIF=""LOOPCLOSEW#1((:6LDfRrZr&:&:&:8LXbDb<tNVZdh~,0Dbf|2>Hhv2DLPflt,Jz:l*^p2ZZ^jpt"8<Nhp \6@DNRVzFJPbfppPR"B <0Yg@YgYfZY (Y008 0@ 8@8!YeYeBgY=f@g@gYZYY88(@h89@Yg ]&=PROCEDURE0=/2=2*PI/ERASE()DIM()'AngledesdispositifsFOR=1TO0=(+*8=+SIN(0)*,@= +COS(0)*LINE, ,8,@IF8<()=0ELSE()=PIENDIFNEXT=PI=PI+/2'PI/3IFEVEN()=2*PI-/2'PI+PI/2=2*PIELSE=0=/2'PI+PI/2ENDIFDO8=@(,,,)h=8+12IF+8+25>/2=-0.1ELSEEXITIFTRUEENDIFLOOPRETURN 6.<:H^Zpz",@*N6hZxf~jr&,48>B PR0:</0Y#YY'  8Vv@@Vv@@ 8Vv@@Vv@@ZY (00@P0@008 0@YY' 8@Y'8@8@g@8@8@0d8@@0d8@80dhP@0dhXYYY'8@PXYY'PX PX  00! 03e| 00!  @03e| 8?L e| 8!| e'(g (g.@=PROCEDURELOCAL,0DEFFILL0RGBCOLORRGB(0,0,255)CIRCLE, ,CIRCLE, ,+8,-90+*(360/(2*PI)),-90+*(360/(2*PI))CIRCLE, ,+8,-90+*(360/(2*PI)),-90+*(360/(2*PI))FOR=1TO0=(+*WHILE0>2*PI0=0-2*PIWEND8=+SIN(0)*,@= +COS(0)*RGBCOLORRGB(255,0,0)LINE, ,8,@RGBCOLORRGB(200,200,0)CIRCLE8,@,8FOR@=0TO2*PISTEPPI/2LINE8,@,8+SIN(@+0+())*8,@+COS(@+0+())*8NEXT@P=8+SIN(0+())*hX=@+COS(0+())*hRGBCOLORRGB(0,0,0)LINE8,@,P,XRGBCOLORRGB(0,155,0)PCIRCLEP,X,10=SQR((P-)^2+(X- )^2)IF0>AND0<()=PI-(0-)*PI/ABS(-)ELSEIF0>AND0<()=2*PI-(0-)*PI/ABS(-)ELSEIF8>(+0.1)'zone2_a()=PIELSEIF8<(-0.1)()=0ENDIFNEXTRGBCOLORRGB(127,127,127)PCIRCLE+SIN(()*/2, +COS(()*/2,/15RETURN &,<HN88Jj,>Bx <VFNt((4Xf~~0b,f86z6z:PRHb< /0Y#Y Y8]8@]YYo@]_@]_@]:( Y Y8]8@]YY_@]o@]_@]:( Y YY]]o@]:$Y Y$@]]]]:$Y Y@]]]]:$ZY(00@ 0@0\ 08 0@0$@] 0$@]8Y@Yo@]]]:8Y@Y8[]Y@]Y@]]:$@@@ 8Y@Y8@0d8]@@0d8]Y@]Y@]]:@ 8Y@Y8Y]]]:$80dhP@0dhX8Y@YPYXY]]]:8G@ 8Y@Y@]o@]o@]o@]:8Y@Y@]]]o@]:$8Y@Y@]]]]: 8Y@Y?]]]]:Z `PY`@]XY`@]$@Y`g]Y`4@]`c@Y` @]Y`4@]:` PX  00! 03e00! x@03e8{Gz?e8{Gz!e8 =PROCEDURE LOCAL,0DEFFILL0'RGBCOLORRGB(0,0,255)(, ,+8,+8+5,,,255,127,127(, ,+8,+8+5,,,127,255,127$, ,,0,0,255$, ,10,0,0,0$, ,3,0,0,0'daaaxe_x+SIN(Angle)*Rayon/2,axe_y+COS(Angle)*Rayon/2,Rayon/15,127,127,127FOR=1TO0=(+*WHILE0>2*PI0=0-2*PIWEND8=+SIN(0)*,@= +COS(0)*'RGBCOLORRGB(255,0,0)'LINEaxe_x,axe_y,e_x,e_y+SIN(0)*10, +COS(0)*10,8,@,255,0,0'RGBCOLORRGB(200,200,0)'CIRCLEe_x,e_y,trd$8,@,8-1,100,100,0FOR@=0TO2*PISTEPPI/4'LINEe_x,e_y,e_x+SIN(aa+a+DA(i%))*trd,e_y+COS(aa+a+DA(i%))*trd8,@,8+SIN(@+0+())*8,@+COS(@+0+())*8,100,100,0NEXT@$8,@,8,0,0,0P=8+SIN(0+())*hX=@+COS(0+())*h'RGBCOLORRGB(0,0,0)'LINEe_x,e_y,Poid_x,Poid_y8,@,P,X,0,0,0'RGBCOLORRGB(0,155,0)'PCIRCLEPoid_x,Poid_y,RD/3IF8>68,@,5,255,255,255$8,@,5,0,0,2558,@,2,0,0,0ELSE8,@,1.5,0,0,0ENDIFFOR`=1TO10P+`/3,X-`/3,10-`/2,`*20,155+`*8,`*20NEXT`=SQR((P-)^2+(X- )^2)IF0>AND0<()=PI-(0-)*PI/ABS(-)ELSEIF0>AND0<()=2*PI-(0-)*PI/ABS(-)ELSEIF8>(+0.01)'zone2_a()=PIELSEIF8<(-0.01)()=0ENDIFNEXT'RGBCOLORRGB(127,127,127)'PCIRCLEaxe_x+SIN(Angle)*Rayon/2,axe_y+COS(Angle)*Rayon/2,Rayon/15RETURN &>v  BrHHZp HHH<<<Vj\dzzz   ZZZ*ZHpRlNRRb2H2H2HVb@6PBTHTH^P^P^l^^bPR&4<iKj=PROCEDUREREPEATUNTILAND(INP(PORT986),8)RETURN ".&4PR<Z)$Y$YY40Y]Y]'YY /* Vitesse = @@@;$@% (@$@;$@ images )WY-+ Nombre de poids = YWY Rapport Rayon/Roue 8?;WY0A AideW:Y4Z]YYY4YZY =PROCEDURE=GetDC(_DC(1))=MEMDC()~SelectObject(,4)SETDC'IF=FALSECLSENDIFTEXT0,0,"/*Vitesse="+STR$(INT(2/*1000)/10)+"%("+STR$(MAX(2,INT(*10)/10))+"images)"TEXT0,16,"-+Nombredepoids="+STR$()TEXT0,32,"RapportRayon/Roue"+STR$(INT(/8+0.5))TEXT0,48,"AAide"'FREEDCSETDC_DC(1)PUT0,0,4~ReleaseDC(_DC(1),)RETURN "(2:HDRDTRbXf\l\l NHbZj^j`tj|vPR< Z)$Y$YY40Y]]': Y4Z]YYY4YZY =PROCEDURE =GetDC(_DC(1))=MEMDC()~SelectObject(,4)SETDC'CLS'TEXT0,0,"Vitesse="+STR$(INT(2/Vitesse*1000)/10)+"%"'TEXT0,16,"Nombredepoids="+STR$(Branches%) 'FREEDCSETDC_DC(1)PUT0,0,4~ReleaseDC(_DC(1),)RETURN "(2:HDRDTJXJJRR\dt PR b<OOOOOOO//\// P\\\Y\YYYYY:D=PROCEDURE(,,,,,,)LOCAL,,\,,,=-,=-,\=SUCC(SQR(^2+^2))=/\=/\FOR=0TO\=+*=+*,,,,NEXTRETURN4*ZH$T^bPRp<lOOOOOO/`d/////|/ rXlOPddOP`` !'`dZ!p?p f`dX`X`>p fX`P>p fX`6>p fzz'`d`d<=PROCEDURE(,,,,,)LOCAL,`,d,,,,,, ,XFORd=--1TO++1=(d-)^2FOR`=--1TO++1=SQR((`-)^2+)IF<RGBCOLORRGB(,,)PLOT`,dELSEIF<+1=- =1-X=RGBPOINT(`,d)=PEEK(V:X)*+* =PEEK(V:X+1)*+* =PEEK(V:X+2)*+* RGBCOLORRGB(,,)PLOT`,dENDIFNEXT`NEXTdRETURN.&lT|8H b"x2@X|&DTXblpPR=$<OOOOO8<@DHLPT// /(/0vXp/8f/@\/HR/PH/X>/`4/h*/p /x/ //;8;<8P@<D8H<PL@PLT?U?UU?U ?UU(UU0v8<XpXp>?8fXpP>?@\Xp6>?HR8f@\HR'8<@DXp Xp>? PH XpP>? X> Xp6>? `4PHX>`4'@DHLXp(Xp>?(h*(XpP>?(p (Xp6>?(xh*p x'HLPTXp0vXp>?0v 0vXpP>?0v0vXp6>?0v 'PT=PROCEDURE(,,,,)LOCAL8,<,@,D,H,L,P,TLOCAL, ,(,0LOCALX,8,@,H,P,X,`,h,p,x,,,'Lescoordonnespourl'affichaged'unpixelx,y:8=INT()'Pixelsuprieurgauche<=INT()'@=SUCC(8)'PixelsuprieurdroitD=<'H=8'PixelinfrieurgaucheL=SUCC(<)'P=@'PixelinfrieurdroitT=L''Lesvaleursdesrapportdesurfacedes4pixels:=(1-FRAC())*(1-FRAC()) =FRAC()*(1-FRAC())(=(1-FRAC())*FRAC()0=FRAC()*FRAC()'Calculdesnouvellesvaleursdecouleurs:'PixelsuprieurgaucheX=RGBPOINT(8,<)8=*+PEEK(V:X)*(1-)@=*+PEEK(V:X+1)*(1-)H=*+PEEK(V:X+2)*(1-)RGBCOLORRGB(8,@,H)PLOT8,<'PixelsuprieurdroitX=RGBPOINT(@,D)P=* +PEEK(V:X)*(1- )X=* +PEEK(V:X+1)*(1- )`=* +PEEK(V:X+2)*(1- )RGBCOLORRGB(P,X,`)PLOT@,D'PixelinfrieurgaucheX=RGBPOINT(H,L)h=*(+PEEK(V:X)*(1-()p=*(+PEEK(V:X+1)*(1-()x=*(+PEEK(V:X+2)*(1-()RGBCOLORRGB(h,p,x)PLOTH,L'PixelinfrieurdroitX=RGBPOINT(P,T)=*0+PEEK(V:X)*(1-0)=*0+PEEK(V:X+1)*(1-0)=*0+PEEK(V:X+2)*(1-0)RGBCOLORRGB(,,)PLOTP,TRETURN("("ZHt^*66X h h,888^~6RR~~0d4NZZr >\*l6l6lNf6FFF*\Bl  $PR<$OOOOOOh/0?@hYhdh00]0]YYY:v=PROCEDURE$(,,,,,)LOCALh,,0h=1+(2**PI)FOR=0TOh0=*2*PI/h+SIN(0)*,+COS(0)*,,,NEXTRETURN.&B8bPtbzPRb<( |OOOOOOOOO`d//0/|'ddv``p ! vYY`ZdZ0z0z0z! r`d`d=PROCEDURE((,,,,,,,,)LOCAL`,d,,0,RGBCOLORRGB(,,)'?z1,z2FORd=-TO+=(d-)^2FOR`=-TO+=SQR((`-)^2+)IF>AND<0=@(,,`,d)IF0>AND0<PLOT`,dENDIFENDIFNEXT`NEXTdRETURN@2`L~f~n4b4@FLT\bPR 8OOOO////0/// h$@V0n00k0@0r0FUNCTION(,,,)LOCAL,,,0,,,=-,=-,=SQR(^2+^2),=/(+ABS(=0)/10)IF>0=ASIN()ELSE0=PI-ASIN()ENDIFWHILE0<00=0+2*PIWENDRETURN0ENDFUNC"N@ $*4 8PRu <,TP43|`d( 4( W 6?| 6? 6 > |M |8Ped2|dPedjZYYyX|PedjZYYyX|PePedCv4Y| oZ +Z,BMZ,J@|@Z,YZ,YZ,6Z,D@Z,|Z,Z,ZZ, Z,YZ,|@Z,Z,Z,YZ,YOYd*dCY|O`  6t$pPt$t$l,6t$pPt$t$\tPtMA$YKN 33333s @$pYKN㥛 0@$YK33333s @$[Dth$>$P>$6>$p0tSh$t9h$>$P>$6>$pZ,YYYpY`zdHZ)w `k=PROCEDURE,(4,)LOCAL,|,,`,d,,,,,$ABIGsauver_bmp_o|()'Lirelatailleetlenombredebitsparpixeldubitmapsauver=SPACE$(40)VOIDGetObject(4,40,V:)|=WORD{V:+2} 'Largeur=WORD{V:+4} 'Hauteur=BYTE{V:+9}'Bitsparpixel'CalculdelatailleenoctetsoccupeparunelignedubitmaporiginalIF=32=|*4ELSEIF=24=|*3=MUL(DIV(+1,2),2)ELSEIF=16=|*2=MUL(DIV(+1,2),2)ELSEIF=8DIM(255)VOIDGetPaletteEntries(_PAL(1),0,256,V:(0))=|=MUL(DIV(+1,2),2)ELSEIF=4DIM(15)VOIDGetPaletteEntries(_PAL(1),0,16,V:(0))=DIV(SUCC(|),2)=MUL(DIV(+1,2),2)ENDIF=*DIM()VOIDGetBitmapBits(4,,V:(0))OPEN"o",#1,'HEADEROUT&#1,19778'SignatureficherBMP("BM")OUT%#1,12+40+*|*4'Tailledufichierenoctets,calculer!OUT&#1,0'RservOUT&#1,0'RservOUT%#1,54'Offsetdel'image,calculer'BITMAPINFOOUT%#1,40+(=8*-1024)'TailledelazoneBITMAPINFOOUT%#1,|'LargeurenpixelsOUT%#1,'HauteurenpixelsOUT&#1,1'NombredeplansOUT&#1,32'Bitparpixel1=monochrome4=16couleurs8=25624=16millionsOUT%#1,0'0=noncompress1=RLE82=RLE4OUT%#1,*|*4'Tailledel'imageenoctetsOUT%#1,5000'pixelsparmtreenlargeurOUT%#1,5000'pixelsparmtreenhauteurOUT%#1,0'NombredecouleursOUT%#1,0'couleursimportantesFORd=PRED()DOWNTO0'L_O%correspondaudplacementparrapportaudbutdel'image'pourlirelaligney%=MUL(d,)CLRFOR`=0TOPRED(|)'LirelescomposantesRGBdechaquespixelsIF=32p=(+2),=(+1),=()ADD,4ELSEIF=24p=(+2),=(+1),=()ADD,3ELSEIF=16=ADD((),SHL((SUCC()),8))p=SHR(AND(,&X1111100000000000),11)*8.225=SHR(AND(,&X0000011111100000),5)*4.047=AND(,&X0000000000011111)*8.225ADD,2ELSEIF=8=(())=PEEK(V:),=PEEK(V:+1),p=PEEK(V:+2)INCELSEIF=4=NOTIF=TRUE=(MOD((),16))INCELSE=(DIV((),16))ENDIF=PEEK(V:),=PEEK(V:+1),p=PEEK(V:+2)ENDIFOUT|#1,,,p,0'critunpixel(onestenmode32bitsuniquement)NEXT`NEXTdCLOSE#1ERASE()IF=8OR=4ERASE()ENDIFRETURNTDTZTZTTbz 00z2BVlv$R\x  " " ..F:F:ZJZJZRZRf~f~  ..l >2r>JT^^^r$r$rfr~r~&6FjPtf<FV.j`h~   & d j j @ @ J T T Z Z ` `      PRPOOPO///(/h/0Z?@@(hhf00g($@I-q=hFUNCTION(,,,)LOCAL,,(,h,0=+1=1DO(=2*PI**((-)/(2*PI))h=-0=h*2*PIIF0/2>(=-=/10EXITIF<0.000000000001ELSE=+ENDIFLOOPRETURNhENDFUNC"B8RFbNfR"8<B LPPEP