Определить количество точек которое входит в окружность радиуса R и произвольным центром окружности (x0, y0) и вывести координаты этих точек
Не могу правильно решить задачу на количество точек, помещающихся в окружность радиуса R. Все что я додумал это вот такой код.
R = int(input())
x0 = int(input())
y0 = int(input())
arr = []
for x in range(x0 - R, (R + x0) + 1):
for y in range(y0 - R, (R + y0) + 1):
if (x * x) + (y * y) <= R * R:
arr.append([x, y])
print(arr)
Но он работает корректно только в том случае, когда координаты центра это 0 и 0. Как можно подправить этот код, чтобы он корректно выводил выводил координаты всех точек, лежащих в окружности с произвольным центром (не 0 и 0)
Ответы (2 шт):
Ну, наверное, при проверке попадания в радиус тоже нужно координаты центра вычитать:
if (x - x0)**2 + (y - y0)**2 <= R * R:
Хотя ещё проще было бы наоборот - везде забыть про этот сдвиг на начало координат и убрать его из формул, а учитывать его только в самом конце, при добавлении точек в список:
arr.append([x + x0, y + y0])
Это всё-равно что рассчитать эти точки для круга с началом в (0,0), а потом сдвинуть их все сразу в новое начало координат (x0,y0).