Programas para Robots.
  Bresenham 3D
 
Me he trasladado a este "Site":

http://sites.google.com/site/proyectosroboticos/

Esta web dejó de actualizarse el 3 de marzo de 2009 a las 21:51h.




Algoritmo de Bresenham para hacer líneas en 3D.

 
Este programa es compatible con Freebasic y Qbasic.
 
En pantalla verás los resultados de los números que se van sucediendo uno a uno. Admite números negativos.

 

Este es el programa:

 
Dim As Integer Cont, dx, dy, dz, Adx, Ady, Adz, x_inc, y_inc, z_inc,_
               err_1, err_2, dx2, dy2, dz2, xxx, yyy, zzz, xold, yold, zold,_
               xnew, ynew, znew
               
Screen 12
                          
While 1

   Input "X: ",  Xnew
   Input "Y: ",  Ynew
   Input "Z: ",  Znew

   xxx=Xold
   yyy=Yold
   zzz=Zold
  
   dx = xnew - Xold
   dy = ynew - Yold
   dz = znew - Zold
   
   If (dx < 0) Then
     x_inc = -1
   Else
     x_inc =  1
   EndIf 
   
   If (dy < 0) Then
     y_inc = -1
   Else
     y_inc =  1
   EndIf
    
   If (dz < 0) Then
    z_inc = -1
   Else
    z_inc =  1
   EndIf
   
   Adx = Abs(dx)
   Ady = Abs(dy)
   Adz = Abs(dz)
   
   dx2 = Adx*2
   dy2 = Ady*2
   dz2 = Adz*2
   
   If ((Adx>= Ady) And (Adx>= Adz)) Then
    
      err_1 = dy2 - Adx
      err_2 = dz2 - Adx
      
      For Cont = 0 To Adx-1
       
         If (err_1 > 0) Then
             yyy+= y_inc
             err_1 -= dx2
         EndIf
        
         If (err_2 > 0) Then
             zzz+= z_inc
             err_2 -= dx2
         EndIf
        
         err_1 += dy2
         err_2 += dz2
         xxx+= x_inc
        
         print xxx, yyy, zzz
        
      Next
      
   EndIf
   
   If ((Ady> Adx) And (Ady>= Adz)) Then
    
      err_1 = dx2 - Ady
      err_2 = dz2 - Ady
      
      For Cont = 0 To  Ady-1
       
         If (err_1 > 0) Then
             xxx+= x_inc
             err_1 -= dy2
         EndIf
        
         If (err_2 > 0) Then
             zzz+= z_inc
             err_2 -= dy2
         EndIf
        
         err_1 += dx2
         err_2 += dz2
         yyy+= y_inc
    
         print xxx, yyy, zzz
       
      Next

   EndIf
   
   If ((Adz> Adx) And (Adz> Ady)) Then
    
      err_1 = dy2 - Adz
      err_2 = dx2 - Adz
      
      For Cont = 0 To Adz-1
        
         If (err_1 > 0) Then
             yyy+= y_inc
             err_1 -= dz2
         EndIf
        
         If (err_2 > 0) Then
             xxx+= x_inc
             err_2 -= dz2
         EndIf
        
         err_1 += dy2
         err_2 += dx2
         zzz+= z_inc
       
         print xxx, yyy, zzz
       
    Next
    
   EndIf
   
   Xold=xnew
   Yold=ynew
   Zold=znew

Wend

End

 
  19468 visitantes (37165 clics a subpáginas)  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis