Ligne avec l'algo de Bresenham

Partagez votre expérience de PureBasic avec les autres utilisateurs.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Ligne avec l'algo de Bresenham

Message par comtois »

C'est un classique , mais je ne l'ai pas encore vu écrit en PureBasic :)

Code : Tout sélectionner

Declare DoLine(XStart,YStart,xend,YEnd,CoulR,CoulG,CoulB)
InitSprite()
InitKeyboard()
OpenScreen(640, 480, 32, "DoLine")

;- Boucle
rayon=200
Repeat
  
  ClearScreen(0, 0, 0)
  For i.w = 0 To 359 
    DoLine(320,240, 320 + rayon * Cos(i * 0.0174533), 240 + rayon * Sin(i* 0.0174533),Random(255),Random(255),Random(255))
  Next i
  FlipBuffers()

  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End

Procedure DoLine(xi,yi,xf,yf,CoulR,CoulG,CoulB) 
  StartDrawing(ScreenOutput())
  FrontColor(CoulR,CoulG,CoulB)
  x = xi 
  y = yi 
  dx = xf - xi 
  dy = yf - yi 
  If dx > 0
    xinc = 1
  Else
    xinc = -1
  EndIf
  If dy > 0
    yinc = 1
  Else
    yinc = -1
  EndIf  
  
  dx = Abs(dx) 
  dy = Abs(dy) 
  Plot(x,y) 
  If  dx > dy 
    cumul = dx / 2 
    For i = 1 To dx  
      x + xinc 
      cumul + dy 
      If (cumul >= dx) 
        cumul - dx 
        y + yinc 
      EndIf  
      Plot(x,y)  
    Next  
  Else 
    cumul = dy / 2 
    For i = 1 To  dy 
      y + yinc 
      cumul + dx 
      If cumul >= dy 
        cumul - dy 
        x + xinc 
      EndIf  
      Plot(x,y) 
    Next   
  EndIf  
  StopDrawing()
EndProcedure   
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu nous fais le cercle aussi ;)
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

tu trouveras l'algo ici :

Algo cercle
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

le cercle , je l'avais déjà fait en décembre 2004 :)

http://purebasic.hmt-forum.com/viewtopic.php?t=1977
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ah oui! :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

comtois a écrit :le cercle , je l'avais déjà fait en décembre 2004 :)

http://purebasic.hmt-forum.com/viewtopic.php?t=1977

il me semble que DRI avait fait un truc sur ce sujet non ? :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Sûrement , je n'ai pas cherché.
Mais je crois que le premier a l'avoir fait avant tout le monde c'est Bresenham :)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

C'est à la base de beaucoup d'autres algos (rotation, mapping, morphing, etc)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

comtois a écrit :Sûrement , je n'ai pas cherché.
Mais je crois que le premier a l'avoir fait avant tout le monde c'est Bresenham :)
:D
je ne cherchais pas a dire que Dri l'avait fait en premier
juste que Dri aussi avait "bossé" le sujet ! :D
Répondre