首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任意角度转换为间隔[ -pi,pi ]

将任意角度转换为间隔[ -pi,pi ]
EN

Stack Overflow用户
提问于 2020-04-28 11:32:06
回答 2查看 1.4K关注 0票数 1

如何将任意角度x的值(以弧度表示)从区间]-infinite,无限[]转换为区间-pi,pi中的等效角

这种转换的例子,以程度表示:

  • 45 deg => 45 deg
  • 180 deg => 180 deg
  • 181 deg => -179 deg
  • -200 deg => 160 deg

>H 114380 deg => 20 degH 215f 216

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-28 16:26:04

如果您可以访问至少3.7版的Python,那么math模块有一个函数math.remainder,它可以在单个函数调用中执行您想要的功能。只需使用math.remainder(my_angle, 2*math.pi) (或者为了好玩,使用math.tau而不是2 * math.pi)。

示例:

代码语言:javascript
复制
>>> 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
票数 3
EN

Stack Overflow用户

发布于 2020-04-28 11:32:06

输入域]-inf,inf[

代码语言:javascript
复制
a1 = np.array([45, 180, 181, -200, 380, -721])

输出域]-180,180[ ]

代码语言:javascript
复制
a2 = np.rad2deg(np.arctan2(np.sin(np.deg2rad(a1)), np.cos(np.deg2rad(a1))))
print(a2)  # [45., 180., -179., 160., 20., -1.]

输出域]0,360[

代码语言:javascript
复制
a3 = [i if i>=0 else i+360 for i in a2]
print(a3)  # [45., 180., 181., 160., 20., 359.]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61479191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档