Programas para Robots.
  Bresenham 4D?
 
 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.






Por último, un Bresenham de 6D. Es el mismo que uso en mi Brazo Robot con unos pequeños cambios de adaptación. Este algoritmo puede servirte para 2D, 3D, 4D, 5D y 6D. Las dimensiones que no uses has de dejarlas a cero, o bien, sin introducir cambios, eso es todo.
 
Para bajarte directamente el programa Bresenham 6D, pincha aquí. Si quieres el Bresenham 4D y nada más, pincha aquí.
 
En el interior de cada ZIP viene el código fuente y el programa ejecutable.
 
Este es el código en FreeBasic (100% compatible con Qbasic en este caso) del Bresenham 6D:
'-------------------------------
 
Dim As Integer   d1,   d2,   d3,   d4,   d5,   d6,_
                Ad1,  Ad2,  Ad3,  Ad4,  Ad5,  Ad6,_
               inc1, inc2, inc3, inc4, inc5, inc6,_
               d1x2, d2x2, d3x2, d4x2, d5x2, d6x2,_
               dim1, dim2, dim3, dim4, dim5, dim6,_
               old1, old2, old3, old4, old5, old6,_
               new1, new2, new3, new4, new5, new6,_
               err1, err2, err3, err4, err5, Cont3               
While (1)
     
     Input "Dim1: ", New1
     Input "Dim2: ", New2
     Input "Dim3: ", New3
     Input "Dim4: ", New4
     Input "Dim5: ", New5
     Input "Dim6: ", New6
 d1 = New1 - Old1
 d2 = New2 - Old2
 d3 = New3 - Old3
 d4 = New4 - Old4
 d5 = New5 - Old5
 d6 = New6 - Old6
  
 If (d1 < 0) Then
   inc1 = -1
 Else
   inc1 =  1
 EndIf
  
 If (d2 < 0) Then
   inc2 = -1
 Else
   inc2 =  1
 EndIf
   
 If (d3 < 0) Then
   inc3 = -1
 Else
   inc3 =  1
 EndIf
  
 If (d4 < 0) Then
   inc4 = -1
 Else
   inc4 =  1
 EndIf
 If (d5 < 0) Then
   inc5 = -1
 Else
   inc5 =  1
 EndIf
  
 If (d6 < 0) Then
   inc6 = -1
 Else
   inc6 =  1
 EndIf
  
 Ad1 = Abs(d1)
 Ad2 = Abs(d2)
 Ad3 = Abs(d3)
 Ad4 = Abs(d4)
 Ad5 = Abs(d5)
 Ad6 = Abs(d6)
  
 d1x2 = Ad1*2
 d2x2 = Ad2*2
 d3x2 = Ad3*2
 d4x2 = Ad4*2
 d5x2 = Ad5*2
 d6x2 = Ad6*2
  
 If(Ad1>=Ad2)And(Ad1>=Ad3)And(Ad1>=Ad4)And(Ad1>=Ad5)And(Ad1>=Ad6) Then
   
  err1 = d2x2 - Ad1
  err2 = d3x2 - Ad1
  err3 = d4x2 - Ad1
  err4 = d5x2 - Ad1
  err5 = d6x2 - Ad1
   
  For Cont3 = 1 To Ad1
    
     If (err1 > 0) Then
         dim2+= inc2
         err1 -= d1x2
     EndIf
      
     If (err2 > 0) Then
         dim3+= inc3
         err2 -= d1x2
     EndIf
      
     If (err3 > 0) Then
         dim4+= inc4
         err3 -= d1x2
     EndIf
     If (err4 > 0) Then
         dim5+= inc5
         err4 -= d1x2
     EndIf
      
     If (err5 > 0) Then
         dim6+= inc6
         err5 -= d1x2
     EndIf
      
     err1 += d2x2
     err2 += d3x2
     err3 += d4x2
     err4 += d5x2
     err5 += d6x2
      
     dim1+= inc1
    
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
      
  Next
   
 EndIf
  
 If(Ad2>Ad1)And(Ad2>=Ad3)And(Ad2>=Ad4)And(Ad2>=Ad5)And(Ad2>=Ad6) Then
   
  err1 = d1x2 - Ad2
  err2 = d3x2 - Ad2
  err3 = d4x2 - Ad2
  err4 = d5x2 - Ad2
  err5 = d6x2 - Ad2
   
  For Cont3 = 1 To  Ad2
    
     If (err1 > 0) Then
         dim1+= inc1
         err1 -= d2x2
     EndIf
      
     If (err2 > 0) Then
         dim3+= inc3
         err2 -= d2x2
     EndIf
      
     If (err3 > 0) Then
         dim4+= inc4
         err3 -= d2x2
     EndIf
    
     If (err4 > 0) Then
         dim5+= inc5
         err4 -= d2x2
     EndIf
      
     If (err5 > 0) Then
         dim6+= inc6
         err5 -= d2x2
     EndIf
       
     err1 += d1x2
     err2 += d3x2
     err3 += d4x2
     err4 += d5x2
     err5 += d6x2
      
     dim2+= inc2
      
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
    
  Next
   
 EndIf
  
 If(Ad3>Ad1)And(Ad3>Ad2)And(Ad3>=Ad4)And(Ad3>=Ad5)And(Ad3>=Ad6) Then
   
  err1 = d2x2 - Ad3
  err2 = d1x2 - Ad3
  err3 = d4x2 - Ad3
  err4 = d5x2 - Ad3
  err5 = d6x2 - Ad3
   
  For Cont3 = 1 To Ad3
      
     If (err1 > 0) Then
         dim2+= inc2
         err1 -= d3x2
     EndIf
      
     If (err2 > 0) Then
         dim1+= inc1
         err2 -= d3x2
     EndIf
      
     If (err3 > 0) Then
         dim4+= inc4
         err3 -= d3x2
     EndIf
      
     If (err4 > 0) Then
         dim5+= inc5
         err4 -= d3x2
     EndIf
      
     If (err5 > 0) Then
         dim6+= inc6
         err5 -= d3x2
     EndIf
      
     err1 += d2x2
     err2 += d1x2
     err3 += d4x2
     err4 += d5x2
     err5 += d6x2
      
     dim3+= inc3
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
    
  Next
   
 EndIf
  
 If(Ad4>Ad1)And(Ad4>Ad2)And(Ad4>Ad3)And(Ad4>=Ad5)And(Ad4>=Ad6) Then
   
  err1 = d1x2 - Ad4
  err2 = d2x2 - Ad4
  err3 = d3x2 - Ad4
  err4 = d5x2 - Ad4
  err5 = d6x2 - Ad4
   
  For Cont3 = 1 To Ad4
      
     If (err1 > 0) Then
         dim1+= inc1
         err1 -= d4x2
     EndIf
      
     If (err2 > 0) Then
         dim2+= inc2
         err2 -= d4x2
     EndIf
      
     If (err3 > 0) Then
         dim3+= inc3
         err3 -= d4x2
     EndIf
      
     If (err4 > 0) Then
         dim5+= inc5
         err4 -= d4x2
     EndIf
      
     If (err5 > 0) Then
         dim6+= inc6
         err5 -= d4x2
     EndIf
      
     err1 += d1x2
     err2 += d2x2
     err3 += d3x2
     err4 += d5x2
     err5 += d6x2
      
     dim4+= inc4
        
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
  
  Next
   
 EndIf
  
If(Ad5>Ad1)And(Ad5>Ad2)And(Ad5>Ad3)And(Ad5>Ad4)And(Ad5>=Ad6) Then
  
  err1 = d1x2 - Ad5
  err2 = d2x2 - Ad5
  err3 = d3x2 - Ad5
  err4 = d4x2 - Ad5
  err5 = d6x2 - Ad5
   
  For Cont3 = 1 To Ad5
      
     If (err1 > 0) Then
         dim1+= inc1
         err1 -= d5x2
     EndIf
      
     If (err2 > 0) Then
         dim2+= inc2
         err2 -= d5x2
     EndIf
      
     If (err3 > 0) Then
         dim3+= inc3
         err3 -= d5x2
     EndIf
      
     If (err4 > 0) Then
         dim4+= inc4
         err4 -= d5x2
     EndIf
      
     If (err5 > 0) Then
         dim6+= inc6
         err5 -= d5x2
     EndIf
      
     err1 += d1x2
     err2 += d2x2
     err3 += d3x2
     err4 += d4x2
     err5 += d6x2
      
     dim5+= inc5
      
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
  Next
  
 EndIf
  
 If(Ad6>Ad1)And(Ad6>Ad2)And(Ad6>Ad3)And(Ad6>Ad4)And(Ad6>Ad5) Then
   
  err1 = d1x2 - Ad6
  err2 = d2x2 - Ad6
  err3 = d3x2 - Ad6
  err4 = d4x2 - Ad6
  err5 = d5x2 - Ad6
   
  For Cont3 = 1 To Ad6
      
     If (err1 > 0) Then
         dim1+= inc1
         err1 -= d6x2
     EndIf
      
     If (err2 > 0) Then
         dim2+= inc2
         err2 -= d6x2
     EndIf
      
     If (err3 > 0) Then
         dim3+= inc3
         err3 -= d6x2
     EndIf
      
     If (err4 > 0) Then
         dim4+= inc4
         err4 -= d6x2
     EndIf
      
     If (err5 > 0) Then
         dim5+= inc5
         err5 -= d6x2
     EndIf
      
     err1 += d1x2
     err2 += d2x2
     err3 += d3x2
     err4 += d4x2
     err5 += d5x2
      
     dim6+= inc6
      
     Print dim1;" ";dim2;" ";dim3;" ";dim4;" ";dim5;" ";dim6
  Next
   
 EndIf
  
 Old1=New1
 Old2=New2
 Old3=New3
 Old4=New4
 Old5=New5
 Old6=New6
  
Wend
 
End
 
 
  19468 visitantes (37167 clics a subpáginas)  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis