Преобразовать любой угол в интервал [-pi, pi] - PullRequest
0 голосов
/ 28 апреля 2020

Как преобразовать значение одного произвольного угла x в радианах из интервала ] - бесконечно, бесконечно [ в эквивалентный угол в интервале [- pi, pi] ?

Примеры такого преобразования в градусах:

  • 45 градусов => 45 градусов
  • 180 градусов => 180 градусов
  • 181 градус => -179 градус
  • -200 градус => 160 градус
  • 380 град => 20 градус

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Если у вас есть доступ по крайней мере к версии 3.7 из Python, то в модуле math есть функция math.remainder, которая делает именно то, что вы хотите в одном вызове функции. Просто используйте math.remainder(my_angle, 2*math.pi) (или для удовольствия используйте math.tau вместо 2 * math.pi).

Пример:

>>> from math import remainder, tau
>>> math.remainder(2.7, tau)
2.7
>>> math.remainder(3.7, tau)  # note wraparound to 3.7 - 2*pi
-2.583185307179586
>>> math.remainder(1000.0, tau)
0.9735361584457891
0 голосов
/ 28 апреля 2020

Один из возможных способов:

import numpy as np

np.arctan2(np.sin(x), np.cos(x))  # converts x to [-np.pi, np.pi]

... и:

np.arctan2(np.sin(x), np.cos(x)) + np.pi  # converts x to [0, 2*np.pi]
...