Page 1 sur 1

Tracés de cercles récursifs

Publié : jeu. 07/juil./2022 23:22
par threedslider
Hello, voici un code dont j'aimerais vous partager c'est des tracés des cercles récursifs :)

Code : Tout sélectionner

; Based on book : Algorithmes et structures de données by Michel Divay (C programming)
; Coded and adapted by threedslider 08.07.2022

Procedure Cercle(X.i, Y.i, R.i)
  For n=0 To 1800
        cx = R * Cos(n)
        cy= R * Sin(n)
        Plot(cx+X,cy+Y,RGB(255,0,0)) 
      Next
EndProcedure

Procedure DeuxCercles(X.i, Y.i, R.i)
  _r.i = 0
  If R > 10
      cercle(X, Y, R)    
      _r = R / 2
      DeuxCercles(X+_r, Y, _r)
      DeuxCercles(X-_r, Y, _r)
    EndIf       
EndProcedure
  
If OpenWindow(0, 0, 0, 600, 600, "Two circles in recursive", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 600, 600) And StartDrawing(ImageOutput(0))
      
      DeuxCercles(300,300,200)
    
      StopDrawing() 
      ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    EndIf
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf

Re: Tracés de cercles récursifs

Publié : ven. 08/juil./2022 13:03
par threedslider
Un autre algorithme mais cette fois-ci trois cercles en récursif.

Code : Tout sélectionner

; Based on book : Algorithmes et structures de données by Michel Divay (C programming)
; Coded and adapted by threedslider 08.07.2022

Procedure Cercle(X.i, Y.i, R.i)
  For n=0 To 1800
        cx = R * Cos(n)
        cy = R * Sin(n)
        Plot(cx+X,cy+Y,RGB(255,0,0)) 
      Next
EndProcedure

Procedure TroisCercles(X.i, Y.i, R.i)
  _r.i = 0
  If R > 10
      cercle(X, Y, R)
      _r = Int((2*Sqr(3.0)-3)*R)
      H = R-_r
      TroisCercles(X-H, Y, _r)
      TroisCercles(X+H/2, Y+_r, _r)
      TroisCercles(X+H/2, Y-_r, _r)
    EndIf       
EndProcedure
  
If OpenWindow(0, 0, 0, 600, 600, "Three circles in recursive", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 600, 600) And StartDrawing(ImageOutput(0))
      
      TroisCercles(300,300,200)
    
      StopDrawing() 
      ImageGadget(0, 0, 0, 200, 200, ImageID(0))
    EndIf
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf

Re: Tracés de cercles récursifs

Publié : mar. 12/juil./2022 0:03
par SPH
@threedslider : tu sais combien de canons de fusils sont pointés vers nous dans ton 2eme code ?

Re: Tracés de cercles récursifs

Publié : mar. 12/juil./2022 15:54
par threedslider
3, je ne sais pas si c'est ça dont tu parles en gros, pourquoi ? Cela tout dépend de canon de fusil, en général c'est deux mais ya aussi trois.

https://cdn1.roumaillac.com/481975-thic ... k22428.jpg

Re: Tracés de cercles récursifs

Publié : mer. 13/juil./2022 7:59
par SPH
Réponse : 39 (avec ton fusil a 3 canons).

Bon, en tout cas, j'ai été impressionné par ton code qui est très court.

Congratz 😎

Re: Tracés de cercles récursifs

Publié : mer. 13/juil./2022 16:44
par threedslider
ah ok je m'en doutais :roll:

Merci, oui je suis impressionné moi aussi et le Purebasic c'est top pour moi :D

Re: Tracés de cercles récursifs

Publié : jeu. 14/juil./2022 19:52
par Kwai chang caine
Jolis effets :wink:
Je ne sais pas pourquoi, mais tous ces yeux...ça m'a fait penser à ma jeunesse 8O

Image

Merci du partage 8)

Re: Tracés de cercles récursifs

Publié : ven. 15/juil./2022 10:45
par threedslider
Merci Kwai chang caine 8)

Oui ça ressemble étrangement à cette image 8O

Re: Tracés de cercles récursifs

Publié : sam. 16/juil./2022 2:59
par Ollivier
S'il y en a bien un qui a offert de l'oxygène à la France !
https://www.youtube.com/watch?v=Ii5BBMJUWW0

Et bon courage, et bonne passion en prog à threedslider !

Re: Tracés de cercles récursifs

Publié : dim. 17/juil./2022 15:23
par threedslider
Merci @Ollivier ainsi que le lien :)