Page 1 sur 1

Tracé d'un arbre par ligne segment en recursif

Publié : dim. 10/juil./2022 11:40
par threedslider
Grâce à leur aide dans ce forum, j'ai pu corriger les erreurs en Purebasic, maintenant il marche ^^

Voici le code dont je vous partage basé sur un livre de l'algorithme en C :

Code : Tout sélectionner

; Based on book : Algorithmes et structures de données by Michel Divay (C programming)
; Coded and adapted by threedslider 09.07.2022
; update some minor by threedslider 10.07.2022


Structure Pos_AB
  NX.i
  NY.i
EndStructure

Procedure Avance(L.i, X.i, Y.i, Angle.i, *pointer.Pos_AB)
  i.i = 0
 
  *pointer\NX = X + Int(L * Cos(Angle*2*#PI / 360.0))
  
  *pointer\NY = Y - Int(L * Sin(Angle*2*#PI / 360.0))
  
  Len = L/15
  
  
  For i=0 To Len
    LineXY(X+i, Y, *pointer\NX+i, *pointer\NY, RGB(255,0,0)) 
  Next
  
EndProcedure

Procedure Arbres(H.i, X.i, Y.i, Angle.i)
  Define.Pos_AB variable_AB
  variable_AB\NX = 0
  variable_AB\NY = 0
  NX.i 
  NY.i  
  N.i 
  I.i
  Dev.i
   
  H = Int(H + 0.1 * Random(H))
  
  Avance(H, X, Y, Angle, @variable_AB)
  
  
  H = 2*H / 3
  
  If H > 1
    N = Random(3) + 2
    Dev = 180/N
    For I = 1 To N
       Arbres(H, variable_AB\NX, variable_AB\NY, Angle - 90 - Dev/2 + I*Dev)
    Next
  EndIf 
  
  
      
EndProcedure

Define.Pos_AB _AB
_AB\NX = 0
_AB\NY = 0

If OpenWindow(0, 0, 0, 600, 600, "Tree lines in recursive", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 600, 600) And StartDrawing(ImageOutput(0))
      
      Arbres(80,300,450,90) 
           
      StopDrawing() 
      ImageGadget(0, 0, 0, 600, 600, ImageID(0))
    EndIf
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf
Happy coding !

Re: Tracé d'un arbre par ligne segment en recursif

Publié : jeu. 14/juil./2022 19:55
par Kwai chang caine
Et ben...j'ai l'impression que t'aime bien les maths 8O
Moi, je ne peut apprécier que l'effet "joli" et c'est réussi :wink:
Merci du partage 8)

Re: Tracé d'un arbre par ligne segment en recursif

Publié : ven. 15/juil./2022 10:55
par threedslider
Disons que j'aime bien les techniques oui :mrgreen:

Faut juste comprendre les algo avec les maths et ça générè de puissant quelque chose comme les fractales et autres types

Merci encore 8)

Re: Tracé d'un arbre par ligne segment en recursif

Publié : ven. 15/juil./2022 12:03
par SPH
Bravo !

C'est très beau (/intéressant).

Et j'admire le code très court !!! 8O

Re: Tracé d'un arbre par ligne segment en recursif

Publié : ven. 15/juil./2022 16:23
par threedslider
Merci @SPH.

Oui j'admets le code est très court :mrgreen:

Re: Tracé d'un arbre par ligne segment en recursif

Publié : mar. 19/juil./2022 10:51
par falsam
Joli ce code. Il me semble que j'avais fait une représentation d'arbres fractales il y a longtemps voir même très longtemps mais impossible de retrouver ce code qui devait être dans le forum hors sujet.
En tout cas merci pour ton code.

Re: Tracé d'un arbre par ligne segment en recursif

Publié : mer. 20/juil./2022 18:34
par threedslider
De rien @falsam, ;)

Re: Tracé d'un arbre par ligne segment en recursif

Publié : ven. 16/sept./2022 21:07
par Ollivier
falsam a écrit : mar. 19/juil./2022 10:51 Joli ce code. Il me semble que j'avais fait une représentation d'arbres fractales il y a longtemps voir même très longtemps mais impossible de retrouver ce code qui devait être dans le forum hors sujet.
En tout cas merci pour ton code.
Peut-être le retrouver avec webArchive ? De souvenir, il me semble que c'est en Automne 2014... (Mais là, point de vue fiabilité de la date, c'est un peu "touché-coulé")

Sinon il y a Trond qui avait fait un arbre par récursivité dans un pure punch contest : ça doit être autour de 2009...

Re: Tracé d'un arbre par ligne segment en recursif

Publié : dim. 25/sept./2022 13:42
par threedslider
Si jamais ça se trouve le code de falsam je serais curieux de voir et comparer cette algo :wink: