Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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]
Ejemplo n.º 6
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