Градусы Python по умолчанию в радианах

Я пытаюсь распечатать значение x,y для линии с определенной степенью, которая пересекает круг с указанным радиусом.

Скажем, например, что линия направлена ​​прямо вверх на 90 градусов.

import math

degree = 90
radius = 10
x = radius * math.cos(degree)
y = radius * math.sin(degree)

print(x,y)

Это печатает -4.480736161291701 8.939966636005579, но, согласно моему калькулятору, должно печатать 0 10 град.

Я уже пытался добавить math.radians и math.degrees до степени var в x = и y =, но это не получалось правильно, когда я пытался. Ссылка, которую я нашел на точку, где линия со степенью пересекает окружность, находится здесь, значения sin / cos переворачиваются для значений x и y в решении.

Проще говоря, как бы я сделал 90 градусов в градусах вместо радианов, чтобы получить правильный x,y?

РЕДАКТИРОВАТЬ:

добавив math.radians:

x = radius * math.cos(math.radians(degree))
y = radius * math.sin(math.radians(degree))

вернул 6.123233995736766e-16 10.0

~~~

добавив math.degrees:

x = radius * math.cos(math.degrees(degree))
y = radius * math.sin(math.degrees(degree))

вернул -2.995153947555356 -9.540914674728182

4 ответа

Все углы в большинстве математических библиотек указаны в радианах. Вход в math.cos должны быть радианы, но вы проходите в градусах.

import math

degree = 90
radius = 10
x = radius * math.cos(math.radians(degree))
y = radius * math.sin(math.radians(degree))
print x,y
>0, 10

math.radians не более, чем делать (pi * degree / 180 )

В Python вы можете использовать math.radians конвертировать из градусов в радианы. Обратите внимание, что по умолчанию радианы используются не только в Python, обычно в математике принято говорить об углах в радианах.

Хотя, в общем, вы всегда можете использовать формулу преобразования

radians = pi * degrees / 180

Ты можешь использовать math.radians(degree) преобразовать в радианы. Все триггерные функции Python по умолчанию работают в радианах. Итак, ваш код становится:

import math

degree = 90
radius = 10
x = radius * math.cos(math.radians(degree))
y = radius * math.sin(math.radians(degree))

print(x,y)

И это дает правильный результат: 6.123233995736766e-16 10.0, с некоторым странным поведением с плавающей запятой, которое можно исправить с помощью соответствующего округления.

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

      from math import sin, cos, tan, asin, acos, atan

def s(x):
    return sin(rad(x))

def c(x):
    return cos(rad(x))

def t(x):
    return tan(rad(x))

def sa(x):
    return deg(asin(x))

def ca(x):
    return deg(acos(x))

def ta(x):
    return deg(atan(x))

Затем во всем коде вместо ввода sin(90)вы бы напечатали s(90), или для arcsin(90)вы бы напечатали sa(90). (Я не мог подобрать кодовое слово для арксинуса, так как asуже является словом Python)

Теперь вы просто набираете свой код, как если бы он был в градусах, и все должно работать нормально.

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