А вот ещё один вопрос на засыпку: как избавиться от неопределённости при использовании арктангенса?
как правило расчеты могут быть ошибочными из-за этого
atan2, есть в подавляющем большинстве ЯП и реализуется сопроцессором аппаратно на x87
Сопроцессоры… Что за дикие сложности…Аппаратное обеспечение здесь вовсе ни при чём, а atan2 есть не везде..
Самому-то написать не аhа? При разработке алгоритма обязательно учитывается точность. Это касается не только тангенса, не только синуса и косинуса (первый при 90°-270°, второй при 0-180° теряет в точности), но и всех других вычислений.
При пользовании сферической тригонометрией тем более – при одних условиях используются одни формулы, при других значениях – алгоритм переходит на другие. Пример – угловое расстояние между двумя точками – функция арккосинус. При значениях, близких к 0°, нужно переходить на синус и т.д.
Другой пример – неопределённость, связанная с делением на 0. Если переменная двойной точности, проблемы нет (не на всех ЯП). Одинарной или целой – будет ошибка, если алгоритмом не предусмотрена процедура обработки ошибки. При этом то же надо помнить, что при делении на число, близкое к 0, результат будет крайне неточным, и если надо, перейти на другой алгоритм..
Это же элементарно. Для того и голова. И надо учитывать особенности языка программирования – вот почему переходить на другой язык сложно