В ответ на использование обратного косинуса для нахождения углов возврата с помощью math.acos, все нормально и прекрасно, если угол равен <= 90 *, как только вы пройдете этот путь, у питона не будет способа определить, какой угол вы хотели . </p>
Обратите внимание.
>>> math.cos(5)
0.28366218546322625
Вверху я попросил питона вывести мне косинус угла 5 радиан, и он дал мне .28 ~ Отлично, ниже я попрошу питона дать мне радиан с косинусом .28 ~. Должно быть 5, верно? Буквально только что сказал мне, что это было.
>>> math.acos(0.28366218546322625)
1.2831853071795865
Неправильно! Python возвращает 1,28 радиана. Причина очевидна при визуальном изображении, 1.28rad имеет тот же косинус, что и 5rad, это обратные углы. Каждый угол имеет один и тот же синус с другим углом (и -синус с двумя другими).
т. е. 5/175 * имеют эквивалентный синус. Они имеют обратно пропорциональные косинусы .99 ~ / -. 99 соответственно. Их двоюродные братья по синусам будут 185 и 355. Здесь мем меморандума о том, что все эти углы имеют одинаковое угловое отклонение от горизонтальной оси. 5 *.
Причина, по которой Python возвращает 1.28, а не 5, состоит в том, что все компьютеры / калькуляторы основаны на абакусоподобной таблице данных угла / радиана, его синуса, cos, tan и т. Д. И т. Д. Так что, когда я math.acos (x) , python просит ядро просмотреть эту таблицу данных на предмет того, какой угол имеет косинус x, и когда он находит его, он возвращает первую запись, с которой он появляется. а потом питон дает мне этот угол.
Из-за этой общей пропорциональной симметрии отношения sin / cos часто повторяются. И вы, вероятно, увидите одну и ту же фигуру несколько раз. Python или ОС не могут определить разность того, какой из двух углов вам действительно нужен, без дополнительной логики, учитывающей значение - / + синуса угла. Или касательная к углу.
1.28 Rad has x cosine, y sine, z tan (72*)
1.88 Rad has -x cosine, y sine, -z tan (108*)
4.39 Rad has -x cosine, -y sine, z tan (252*)
5 Rad has x cosine, -y sine, -z tan (288*)
или, если смотреть декартово,
negX,posY | posX,posY
-----+-----
negX,negY | posX,negY
1.88 Rad has -x cosine, y sine (108) | 1.28 Rad has x cosine, y sine (72*)
-----+-----
4.39 Rad has -x cosine, -y sine (252)| 5 Rad has x cosine, -y sine (288)
Так что, если по какой-то причине мне нужно выбрать 5 радиан (скажем, для векторного рисования или игры, чтобы определить различные векторы врагов от игрока), я должен был бы выполнить некоторый тип сравнения логики if / then синусы / касательные.