def DDA_Y(recta, case): print "DDA_Y" print "A1: " , recta.getPoints()[0] print "B1: " , recta.getPoints()[1] # case 0 : # Yk+1 = Yk + m # case 1 : # Yk+1 = Yk - m print "CASO:" , case i = 0 if(case == 0):#ya no vamos de A hacia B, si no al contrario #print "A: " , recta.getPoints()[0] , "B: " , recta.getPoints()[1] [A,B] = swap(recta.getPoints()[0],recta.getPoints()[1]) recta.setPoints(A,B) print "A: " , A , "B: " , B parada = recta.getPoints()[1] print "punto de llegada: " , parada while(True): pivote = recta.getPoints()[0] # recta.[x1,y1] #libreria1.DrawPixel(pivote, AZUL) #NO QUIERE SERVIR libreria1.makeCircle(libreria1.Transform(pivote),1,VERDE) print "pivote: " , pivote new_y = int(round(pivote[1] + recta.getPendiente())) new_x = int(round(( int(new_y) - recta.getb() ) / recta.getPendiente())) new_point = [new_x,new_y] #libreria1.DrawPixel(new_point, AZUL) print "New point: " , new_point libreria1.makeCircle(libreria1.Transform(new_point),1,VERDE) if(new_y <= parada[1] ):#or i == 10): #Yk+1 <= Yk return #parada print "parada: " , parada print "new_y: " , new_y recta.setPoints([new_x,new_y],recta.getPoints()[1]) #recta = new_rect i+=1
def DDA_X(recta, case): print "DDA_X" print "A1: " , recta.getPoints()[0] print "B1: " , recta.getPoints()[1] # case 0 : Xk+1 = Xk + 1/m # case 1 : Xk+1 = Xk + 1/(-m) print "CASO:" , case i = 0 if(case == 1):#ya no vamos de A hacia B, si no al contrario [A,B] = swap(recta.getPoints()[0],recta.getPoints()[1]) recta.setPoints(A,B) print "A: " , A , "B: " , B parada = recta.getPoints()[1] print "punto de llegada: " , parada while(True): pivote = recta.getPoints()[0] # recta.[x1,y1] print "pivote: " , pivote #libreria1.DrawPixel(pivote, AZUL) libreria1.makeCircle(libreria1.Transform(pivote),1,VERDE) d_x = float(parada[0] - recta.getPoints()[0][0]) #x2-x1 print "d_x : " , d_x m = 1/d_x #En esta se calcula con la pendiente nueva, no con la original b = pivote[1] - d_x*pivote[0] #el b tambien se vuelve a calcular new_x = int(round( pivote[0] + 1/m)) #new_x = pivote[0] + d_x print "pivote[0] : " , pivote[0] print "m : " , m print "suma : " , pivote[0] + m print "round : " , round( pivote[0] + 1/m ) new_y = int(round(d_x*(pivote[0] + m) + b)) new_point = [new_x,new_y] print "New point: " , new_point libreria1.makeCircle(libreria1.Transform(new_point),1,VERDE) #ibreria1.DrawPixel(new_point, AZUL) print "new_x: " , new_x print "parada[0]: " , parada[0] print "-----------------------" if(new_x >= parada[0] ):#or i == 10): #Xk+1 >= Xk return #parada print "parada: " , parada print "new_y: " , new_y recta.setPoints([new_x,new_y],recta.getPoints()[1]) #actualiza i+=1
# m = 1 Ax = 0 Ay = 0 Bx = 100 By = 100 # m = 2.5 Ax = 20 Ay = 20 Bx = 60 By = 120 #m indeterminado (x2-x1)=0 Ax = 20 Ay = 30 Bx = 20 By = 80 ''' libreria1.makePlane() libreria1.makeCircle(libreria1.Transform([Ax, Ay]), 1, AZUL) libreria1.makeCircle(libreria1.Transform([Bx, By]), 1, AZUL) Bresenham(Ax, Ay, Bx, By) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0)
# m = 1 Ax = 0 Ay = 0 Bx = 100 By = 100 # m = 2.5 Ax = 20 Ay = 20 Bx = 60 By = 120 #m indeterminado (x2-x1)=0 Ax = 20 Ay = 30 Bx = 20 By = 80 ''' libreria1.makePlane() libreria1.makeCircle(libreria1.Transform([Ax,Ay]),1,AZUL) libreria1.makeCircle(libreria1.Transform([Bx,By]),1,AZUL) Bresenham(Ax,Ay,Bx,By) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0)
#Cardioide: r = a(1+cos(t)) # x = r cos (theta) # y = r sen (theta) a = 50 for t in range (0,360): #pasarlos a radianes r = a * (1 - math.cos(libreria1.DegToRad(t))) #pasarlos a cartesianas x = r*math.cos(libreria1.DegToRad(t)) y = r*math.sin(libreria1.DegToRad(t)) libreria1.makeCircle(libreria1.Transform([int(x),int(y)]),1) ''' reloj = pygame.time.Clock() r = 50 libreria1.makeCircle(libreria1.Transform([0,0]),r,ROJO) #dibuja el circulo fijo for t in range (0,360): x = r*math.cos(libreria1.DegToRad(t)) y = r*math.sin(libreria1.DegToRad(t)) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x),int(y)]),2*r, VERDE) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x),int(y)]),1,BLANCO) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x),int(y)]),2*r,NEGRO) x2 = 3*r*math.cos(libreria1.DegToRad(t)) y2 = 3*r*math.sin(libreria1.DegToRad(t)) libreria1.makeCircle(libreria1.Transform([int(x2)+1,int(y2)]),1,ROJO) '''centro_circulo = [100,0]
#Cardioide: r = a(1+cos(t)) # x = r cos (theta) # y = r sen (theta) a = 50 for t in range (0,360): #pasarlos a radianes r = a * (1 - math.cos(libreria1.DegToRad(t))) #pasarlos a cartesianas x = r*math.cos(libreria1.DegToRad(t)) y = r*math.sin(libreria1.DegToRad(t)) libreria1.makeCircle(libreria1.Transform([int(x),int(y)]),1) ''' reloj = pygame.time.Clock() r = 50 libreria1.makeCircle(libreria1.Transform([0, 0]), r, ROJO) #dibuja el circulo fijo for t in range(0, 360): x = r * math.cos(libreria1.DegToRad(t)) y = r * math.sin(libreria1.DegToRad(t)) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x), int(y)]), 2 * r, VERDE) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x), int(y)]), 1, BLANCO) reloj.tick(150) libreria1.makeCircle(libreria1.Transform([int(x), int(y)]), 2 * r, NEGRO) x2 = 3 * r * math.cos(libreria1.DegToRad(t)) y2 = 3 * r * math.sin(libreria1.DegToRad(t)) libreria1.makeCircle(libreria1.Transform([int(x2) + 1, int(y2)]), 1, ROJO) '''centro_circulo = [100,0] puntos = [] for i in range(0,2*pi):#generamos todos los puntos de un circulo y lo guardamos