Tracé d'un arbre par ligne segment en recursif

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Tracé d'un arbre par ligne segment en recursif

Message 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 !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

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

Message 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)
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Bravo !

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

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

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

Message par threedslider »

Merci @SPH.

Oui j'admets le code est très court :mrgreen:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

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

Message par threedslider »

De rien @falsam, ;)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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...
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

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

Message par threedslider »

Si jamais ça se trouve le code de falsam je serais curieux de voir et comparer cette algo :wink:
Répondre