DivisionByZero em find_intersection_points
no arquivo geocomp/gui/tk.py
, função find_intersection_points
, há um bug:
def find_intersection_points(x0, y0, x1, y1):
"""retorna os dois pontos que a reta passando pelos pontos dos argumentos
intersecta com as bordas do canvas
"""
print(x0, x1, x0 == x1)
if x0 == x1:
return float (canvas.r2cx(x0)), 0, float (canvas.r2cx(x1)), float (canvas['height'])
if y0 == y1:
return 0, float (canvas.r2cy(y0)), float (canvas['width']), float (canvas.r2cy(y1))
x0 = float (canvas.r2cx(x0))
y0 = float (canvas.r2cy(y0))
x1 = float (canvas.r2cx(x1))
y1 = float (canvas.r2cy(y1))
print(x0, x1, x0 == x1)
dy, dx = (y1 - y0), (x1 - x0)
alpha = (x[0] - x0) / dx
Adicionei os prints para deixar o problema mais visível.
O problema é que, ao rodar com números grandes e próximos, como por exemplo:
x0 = 9807.0
x1 = 9806.8
y0 e y1 quaisquer
x0 é diferente de x1, entretando após passar os dois na função canvas.r2cx()
, os dois retornam com o
mesmo valor de 537.0
. Logo, dx = 0
e alpha
realizará uma divisão por zero.
Daqui a pouco criarei uma MR que realiza essa correção.