Top.Mail.Ru
Ответы
Аватар пользователя
12лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Здравствуйте. Есть две точки А [x;y] B[x;y]. Как определить угол между соединяющим их отрезком и осью координат (X или Y -

Есть две точки А [x;y] B[x;y]. Как определить угол между соединяющим их отрезком и осью координат (X или Y - всё равно) . Я понимаю, что всё просто: arctangens(y/x), но это не подходит - слишком долго считается в программе. Нужна простая быстрая функция, которая в ущерб точности (можно значительный ущерб точности) определит угол в любой из 4-х четвертях. Арктангенс в этом смысле вроде не подходит, так как y/x = -y/-x. Помогите. 5-й день мозг болит. Повторюсь: плевать на точности, главное - скорость выполнения. И ещё, необходимо получать угол со значением не от 0 до 360, а от 0 до 65536. Возможно кто-то до меня дошёл до этого, прошу помощи.

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
12лет

1. Какая именно скорость нужна? Сколько нужно считать углов в секунду, на каком процессоре? Может, оптимизировать алгоритм в целом, а не одну его деталь?
2. Большинство ЯП имеют, кроме функции atan, функцию atan2, принимающую 2 параметра и лишенную проблемы знаков (и деления заодно) .
3. Преобразование - одно умножение.
4. Общее. Если поискать в Гугле "как правильно задавать вопросы", выскакивает очень интересный документ, в котором сказано, в частности, следующее:
Вопрос:
Как можно с помощью X сделать Y?

Ответ:
Если вы хотите сделать Y, надо так и спрашивать, не предполагая заранее использование метода, который может вовсе не подходить. Вопросы такого вида часто задают те, кто не просто ничего не знает об X, но сбит с толку решаемой проблемой Y и слишком сконцентрирован на деталях своей конкретной ситуации. Обычно лучше игнорировать таких людей, пока они не сформулируют свою проблему лучше.