Python - преобразование координат вращения X, Y из радианов в градусы

Я застрял, работая над этим часами, и я не очень хорошо разбираюсь в такого рода математике, поэтому, пожалуйста, держитесь за меня.

У меня есть 2 значения в радианах, c[1] а также c[3], Мне нужно повернуть радианы в градусы, и я понятия не имею, что делать с этими числами, чтобы получить градусы из них. Я искал в Интернете повсюду, и я не могу найти ничего, что я действительно могу понять. Я пытался разработать свой собственный способ сделать это, но я уверен, что я даже не близко. Я пробовал следующее:

    z = (((c[1] * 180) + 180) + ((c[3] * 180) + 180))
    z = (((c[1] * math.pi) / 180) + ((c[3] * math.pi) / 180) / 2)
    z = (c[1] * (90/math.pi) - (c[3] * (90/math.pi)))
    z = math.atan2(c[3], c[1])
    z = (math.degrees(c[1]) + math.degrees(c[3])) * 2
    z = c[1]
    z = (math.asin(c[3]) / math.acos(c[1]))

Как получить значение в градусах от 2 радиан?

3 ответа

Изучив ваш комментарий, я не думаю, что вы получаете два угла в радианах для c[1] и c[3]. Скорее вы получаете направление косинусов. Если бы вы получали углы в радианах, значение было бы от -pi до pi. Скорее, значение изменяется от -1 до 1 (то есть от cos(-pi) до cos(pi)).

Вы можете изменить значение сначала на угол в радианах, а затем на градусы, если это то, что вы хотите. Как предостережение, косинус углов симметричен... Так что для:

In [12]: zip(angles, (cos(angles)))
Out[12]:
[(-3.1415926535897931, -1.0),
 (-2.8108986900540254, -0.94581724170063464),
 (-2.4802047265182576, -0.78914050939639346),
 (-2.1495107629824899, -0.5469481581224267),
 (-1.8188167994467224, -0.24548548714079912),
 (-1.4881228359109546, 0.082579345472332394),
 (-1.1574288723751871, 0.40169542465296937),
 (-0.82673490883941936, 0.67728157162574099),
 (-0.49604094530365161, 0.87947375120648907),
 (-0.16534698176788387, 0.98636130340272232),
 (0.16534698176788387, 0.98636130340272232),
 (0.49604094530365161, 0.87947375120648907),
 (0.82673490883941891, 0.67728157162574132),
 (1.1574288723751867, 0.40169542465296976),
 (1.4881228359109544, 0.082579345472332616),
 (1.8188167994467221, -0.2454854871407989),
 (2.1495107629824899, -0.5469481581224267),
 (2.4802047265182576, -0.78914050939639346),
 (2.8108986900540254, -0.94581724170063464),
 (3.1415926535897931, -1.0)]

Но,

In [11]: zip(angles, arccos(cos(angles)))
Out[11]:
[(-3.1415926535897931, 3.1415926535897931),
 (-2.8108986900540254, 2.8108986900540254),
 (-2.4802047265182576, 2.4802047265182576),
 (-2.1495107629824899, 2.1495107629824899),
 (-1.8188167994467224, 1.8188167994467224),
 (-1.4881228359109546, 1.4881228359109546),
 (-1.1574288723751871, 1.1574288723751871),
 (-0.82673490883941936, 0.82673490883941936),
 (-0.49604094530365161, 0.49604094530365156),
 (-0.16534698176788387, 0.16534698176788418),
 (0.16534698176788387, 0.16534698176788418),
 (0.49604094530365161, 0.49604094530365156),
 (0.82673490883941891, 0.82673490883941891),
 (1.1574288723751867, 1.1574288723751867),
 (1.4881228359109544, 1.4881228359109544),
 (1.8188167994467221, 1.8188167994467221),
 (2.1495107629824899, 2.1495107629824899),
 (2.4802047265182576, 2.4802047265182576),
 (2.8108986900540254, 2.8108986900540254),
 (3.1415926535897931, 3.1415926535897931)]

Это означает, что, получая ваши углы от ваших косинусов направления, вам нужно будет сделать:

In [13]: def toAng(a): return sign(a)*arccos(a)

который даст вам ваши правильные углы:

In [19]: zip(angles, toAng(cos(angles)))
Out[19]:
[(-3.1415926535897931, -3.1415926535897931),
 (-2.8108986900540254, -2.8108986900540254),
 (-2.4802047265182576, -2.4802047265182576),
 (-2.1495107629824899, -2.1495107629824899),
 (-1.8188167994467224, -1.8188167994467224),
 (-1.4881228359109546, 1.4881228359109546),
 (-1.1574288723751871, 1.1574288723751871),
 (-0.82673490883941936, 0.82673490883941936),
 (-0.49604094530365161, 0.49604094530365156),
 (-0.16534698176788387, 0.16534698176788418),
 (0.16534698176788387, 0.16534698176788418),
 (0.49604094530365161, 0.49604094530365156),
 (0.82673490883941891, 0.82673490883941891),
 (1.1574288723751867, 1.1574288723751867),
 (1.4881228359109544, 1.4881228359109544),
 (1.8188167994467221, -1.8188167994467221),
 (2.1495107629824899, -2.1495107629824899),
 (2.4802047265182576, -2.4802047265182576),
 (2.8108986900540254, -2.8108986900540254),
 (3.1415926535897931, -3.1415926535897931)]

Наконец, если вам нужно преобразовать его в градусы, вы можете просто сделать:

В [20]: def toAng(a): вернуть 180*sign(a)*arccos(a)/pi

In [21]: zip(angles, toAng(cos(angles)))
Out[21]:
[(-3.1415926535897931, -180.0),
 (-2.8108986900540254, -161.05263157894737),
 (-2.4802047265182576, -142.10526315789474),
 (-2.1495107629824899, -123.1578947368421),
 (-1.8188167994467224, -104.21052631578948),
 (-1.4881228359109546, 85.263157894736835),
 (-1.1574288723751871, 66.31578947368422),
 (-0.82673490883941936, 47.368421052631582),
 (-0.49604094530365161, 28.421052631578949),
 (-0.16534698176788387, 9.4736842105263346),
 (0.16534698176788387, 9.4736842105263346),
 (0.49604094530365161, 28.421052631578949),
 (0.82673490883941891, 47.368421052631554),
 (1.1574288723751867, 66.315789473684191),
 (1.4881228359109544, 85.263157894736835),
 (1.8188167994467221, -104.21052631578947),
 (2.1495107629824899, -123.1578947368421),
 (2.4802047265182576, -142.10526315789474),
 (2.8108986900540254, -161.05263157894737),
 (3.1415926535897931, -180.0)]

Что дает вам правильные углы в градусах...

Обратите внимание, я использую среду, где sign, pi и т.д. В вашей программе вы можете импортировать их отдельно.

Преобразование градусов в радианы выполняется с помощью уравнения (n град)*(пи /180 град).

z = (c[1]*(math.pi/180.0) + (c[1]*(math.pi/180)

если это то, что вам нужно делать регулярно, сделайте функцию.

def DegtoRad(deg):
    return (deg)*(math.pi/180)

или как лямбда

DegtoRad = lambda x: x*(math.pi/180)

помните, что если вы не импортировали math/math.pi, все это не сработает. вероятно, лучше определить pi с фактической литеральной переменной в соответствии с вашими потребностями точности.

Это было не так уж сложно найти в Интернете? - это было?

http://www.mathwarehouse.com/trigonometry/radians/convert-degee-to-radians.php

Формула противоположна формуле @user2913685: num*180/pi (простая ошибка)

Вот пример в Python:

pi = 3.14159265

rad_val = 7

deg_val = rad_val*180/pi

print(deg_val)

который дает вывод:

401.07045704986604

Это использует pi как 3.14159265, и не использует модуль math. Очевидно, что вы можете сделать то же самое, что и в другом ответе, но после изменения формулы.

Другие вопросы по тегам