Здравствуйте, ShimoN, Вы писали:
SN>Так то оно так, но вы не учли один ньюанс. Мне не нужны сами точки, мне нужны дельты — расстояния по каждой из осей на которые надо переместиться.
Для этого надо взять каноническое уравнение окружности X^2 + Y^2 = R^2. Далее предположим, что у нас уже есть некая "затравочная" точка на окружности (почти на окружности). Для нее считаем выражение
abs(X*X + Y*Y — R*R)
Это будет значение оценочной функции. Далее выполняем три пробных шага — вычисляем для (X+1,Y), (X,Y+1) и (X+1,Y+1) и шагаем в ту сторону, в которой значение оценочной функции минимально.
Вместо "+1" может быть "-1". В первом квадранте dx=-1, dy=+1, во втором -1,-1 и т.д.
Фишка еще в том, что на каждом шаге нам не обязательно умножать. X^2 и Y^2 легко вычисляются инкрементальным способом. Ну, для затравочной точки надо посчитать все честным способом.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.