Hola usuario de nuestro sitio, tenemos la respuesta a lo que buscabas, has scroll y la encontrarás un poco más abajo.
Ejemplo: algoritmo de línea de Python Bresenham
defget_line(start, end):"""Bresenham's Line Algorithm
Produces a list of tuples from start and end
>>> points1 = get_line((0, 0), (3, 4))
>>> points2 = get_line((3, 4), (0, 0))
>>> assert(set(points1) == set(points2))
>>> print points1
[(0, 0), (1, 1), (1, 2), (2, 3), (3, 4)]
>>> print points2
[(3, 4), (2, 3), (1, 2), (1, 1), (0, 0)]
"""# Setup initial conditions
x1, y1 = start
x2, y2 = end
dx = x2 - x1
dy = y2 - y1
# Determine how steep the line is
is_steep =abs(dy)>abs(dx)# Rotate lineif is_steep:
x1, y1 = y1, x1
x2, y2 = y2, x2
# Swap start and end points if necessary and store swap state
swapped =Falseif x1 > x2:
x1, x2 = x2, x1
y1, y2 = y2, y1
swapped =True# Recalculate differentials
dx = x2 - x1
dy = y2 - y1
# Calculate error
error =int(dx /2.0)
ystep =1if y1 < y2 else-1# Iterate over bounding box generating points between start and end
y = y1
points =[]for x inrange(x1, x2 +1):
coord =(y, x)if is_steep else(x, y)
points.append(coord)
error -=abs(dy)if error <0:
y += ystep
error += dx
# Reverse the list if the coordinates were swappedif swapped:
points.reverse()return points
Puedes patrocinar nuestro estudio escribiendo un comentario y dejando una valoración te damos las gracias.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)