Я бы начал с создания прямоугольника вокруг круга и сначала проверил, попадет ли в него что-нибудь.Тогда вы, вероятно, все время избегаете вычисления квадратов и квадратов.Выберите один край коробки (скажем, тот, что слева) и вычислите его значение x:
xMin = xOrigin - radius
Тогда все, что удовлетворяет
xTest < xMin
, можно игнорировать.Повторите что-то подобное для всех четырех сторон.В тот момент, когда тест не пройден, перестаньте работать над этим пунктом.Не делайте ненужных вычислений.
Это говорит о том, что точка находится близко, но не обязательно в радиусе.Затем вычислите:
abs(sqr(xOrigin - xTest) - sqr(yOrigin - yTest))
, если это меньше радиуса * радиуса (который вы предварительно рассчитали, чтобы избежать использования квадратных корней), то у вас есть точка в радиусе.
Это лучшееЯ могу понять, с предварительной структурой данных.