Page 1 sur 1

Ligne avec l'algo de Bresenham

Publié : jeu. 14/avr./2005 22:24
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   

Publié : jeu. 14/avr./2005 22:50
par djes
Tu nous fais le cercle aussi ;)

Publié : jeu. 14/avr./2005 23:17
par flaith
tu trouveras l'algo ici :

Algo cercle

Publié : ven. 15/avr./2005 5:37
par comtois
le cercle , je l'avais déjà fait en décembre 2004 :)

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

Publié : ven. 15/avr./2005 21:47
par djes
Ah oui! :lol:

Publié : sam. 16/avr./2005 16:34
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 ? :)

Publié : sam. 16/avr./2005 17:19
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 :)

Publié : sam. 16/avr./2005 20:51
par djes
C'est à la base de beaucoup d'autres algos (rotation, mapping, morphing, etc)

Publié : dim. 17/avr./2005 9:47
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