Вспомогательные процедуры и функции
Функция для определения коэффициентов линейного уравнения
def kac(x1,y1,x2,y2):
a=(y1-y2)/(x1-x2)
return a,y1-a*x1
Функция для определения количества точек (с целыми координатами) лежащих на отрезке прямой заданной уравнением.
Для работы функции необходим двумерный массив m [1000][1000] или больше (зависит от условия задачи)
def klen(x1,y1,x2,y2,r):
x,y=[x1,x2],[y1,y2]
if x1!=x2:
a,c=kac(x1,y1,x2,y2)
for xt in range(min(x),max(x)+1):
yt=a*xt+c
if yt==int(yt): m[xt+r//2][int(yt)+r//2]=1
else:
for yt in range(min(y),max(y)+1):m[x1+r//2][int(yt)+r//2]=1