一款简单的角度计算Python包:PyAngle

2023-11-08

一款简单的角度计算Python包:PyAngle

PyAngle

A simple package for angle calculation

Use

pip install PyAngle

class Angle

Designed especially for angle in the form of DMS(Degree, Minute and Second)

immutable object

default: public, non-static

APIs

Creators

>>> a1 = Angle.from_dms(deg=30, min=20, sec=10)
>>> a2 = Angle.from_degrees(degrees=60)
>>> a3 = Angle.from_rad(rad=1.23)
>>> a4 = Angle.from_atan2(x=0.7, y=0.8)
  • from_dms(deg, min=0, sec=0) -> Angle
  • from_degrees(degrees) -> Angle
  • from_rad(rad) -> Angle
  • from_atan2(x, y) -> Angle

Operators

>>> str(a1 + a2)
'90 20 10.00'
>>> str(a3 % a4)
'21 39 35.04'
>>> angle_list = [a1, a2, a3, a4]
>>> angle_list.sort(reverse=True)
>>> angle_list
[<PyAngle.Angle.Angle object at 0x0000020C195FD0F0>, <PyAngle.Angle.Angle object at 0x0000020C19521B38>, <PyAngle.Angle.Angle object at 0x0000020C195FD860>, <PyAngle.Angle.Angle object at 0x0000020C195D6EF0>]
>>> a3 > a4
True
  • __add__(self, other): “+”
  • __sub__(self, other): “-”
  • __mul__(self, n): “*”
  • __truediv__(self, n): “/”
  • __floordiv__(self, n): “//”
  • __mod__(self, other): “%”
  • __str__(self)
  • __cmp__(self, other)
  • __eq__(self, other): “==”
  • __ne__(self, other): “!=”
  • __le__(self, other): “<=”
  • __lt__(self, other): “<”
  • __ge__(self, other): “>=”
  • __gt__(self, other): “>”
  • __hash__(self)

Calculators

>>> a2.sin()
0.8660254037844386
  • sin() -> float
  • cos() -> float
  • tan() -> float

Getters

>>> a4.get_deg()
48
>>> a4.get_sec()
50.66940344529314
  • get_deg() -> int
  • get_min() -> int
  • get_sec() -> float

Switchers

>>> [x.to_degrees() for x in angle_list]
[70.47380880109125, 60.0, 48.81407483429036, 30.336111111111112]
>>> a1.to_atan2(x=1)
(1, 0.5851986012863108)
>>> a3.to_fmt_str()
'70°28′25.71″'
  • to_degrees() -> float
  • to_rad() -> float
  • to_atan2(x=None, y=None) -> (float, float)
  • to_fmt_str(fmt="xxx°xxx′xxx″", decimal=2) -> str

Judges

>>> a3.is_acute_angle()
True
  • is_zero_angle() -> bool: 零角
  • is_acute_angle() -> bool: 锐角
  • is_right_angle() -> bool: 直角
  • is_obtuse_angle() -> bool: 钝角
  • is_straight_angle() -> bool: 平角
  • is_major_angle() -> bool: 优角
  • is_minor_angle() -> bool: 劣角
  • is_complementary_angle_with(other) -> bool: 余角
  • is_supplementary_angle_with(other) -> bool: 补角

module AngleListAPIs

APIs

>>> AngleListAPIs.from_angle_list_to_atan2_list(angle_list)
[(0.3342377271245026, 0.9424888019316975), (0.5000000000000001, 0.8660254037844386), (0.658504607868518, 0.7525766947068778), (0.8630773966838536, 0.5050716853412216)]
>>> AngleListAPIs.from_rad_list_to_angle_list([1.23, 1.0471975511965976, 0.8519663271732721, 0.5294650211397243])
[<PyAngle.Angle.Angle object at 0x0000028ED1910DD8>, <PyAngle.Angle.Angle object at 0x0000028ED1910E48>, <PyAngle.Angle.Angle object at 0x0000028ED1910EB8>, <PyAngle.Angle.Angle object at 0x0000028ED1910F28>]
  • from_atan2_list_to_angle_list(angles: [(float, float)]) -> ["Angle"]
  • from_degrees_list_to_angle_list(angles: [float]) -> ["Angle"]
  • from_rad_list_to_angle_list(angles: [float]) -> ["Angle"]
  • from_angle_list_to_atan2_list(angles: ["Angle"]) -> [(float, float)]
  • from_angle_list_to_degrees_list(angles: ["Angle"]) -> [float]
  • from_angle_list_to_rad_list(angles: ["Angle"]) -> [float]
# When needed to switch within atan2, degrees and rad, switch via angle list
>>> degrees_list = [1.2, 3.4, 5.6, 7.8, 9.0]
>>> atan2_list = AngleListAPIs.from_angle_list_to_atan2_list(AngleListAPIs.from_degrees_list_to_angle_list(degrees_list))
>>> atan2_list
[(0.9997806834748455, 0.020942419883356957), (0.9982398279237653, 0.05930637357596162), (0.9952273999818312, 0.09758289975914947), (0.9907478404714436, 0.13571557243430438), (0.9876883405951378, 0.15643446504023087)]
  • get_nearest_angle(angle: "Angle", angles: ["Angle"]) -> "Angle": 在angles中找到与angle最近的角
  • get_furthest_angle(angle: "Angle", angles: ["Angle"]) -> "Angle": 在angles中找到与angle最远的角
>>> nearest_angle = get_nearest_angle(angle, angles)

class UnlimitedAngle

degrees ranges [-∞, +∞] (without restrict)

>>> ua1 = UnlimitedAngle.from_degrees(degrees=1000)
>>> ua2 = UnlimitedAngle.from_degrees(degrees=-1000)
  • to_Angle(): switch UnlimitedAngle into Angle

Future Features

3.0

Draw Angle on Axis

  • plot(length, origin=(0, 0), base_angle=Angle.from_degrees(degrees=0), counter_clock_wise=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一款简单的角度计算Python包:PyAngle 的相关文章

随机推荐

  • javaweb (三)——javabean

    文章目录 1 1 javabean简介 1 2 javabean应用 1 2 1 javabean与表单 1 2 2 设置属性
  • 文献

    Hello 大家好 这里是壹脑云科研圈 我是墨心 你快乐吗 你想获得快乐吗 如果你不快乐 可能是因为你太想快乐了 这是一个 追求快乐 的悖论 Zerwas和Ford 2021 在Current Opinion in Behavioral S
  • chisel使用自定义/标准库中的函数简化设计(更新)

    主体内容摘自 https blog csdn net qq 34291505 article details 87905379 函数是编程语言的常用语法 即使是Verilog这样的硬件描述语言 也会用函数来构建组合逻辑 对于Chisel这样
  • powermill2020卡死_大家注意了!PowerMILL2020来了......

    欧克特官方已发布PowerMILL2020 机明软件为您预告PowerMILL2020的部分新增功能及部分功能的优化 一 刀具路径改进 1 上坡清角精加工 当使用清角精加工策略时 选择上坡切削 这样在陡峭区域的拐角将由下向上而不是由上向下加
  • 马斯克又出昏招、最疯狂的举动之一!给不喜欢的网站增加5秒延迟

    编译 核子可乐 Tina 马斯克正在限制他不喜欢的新闻网站和竞争对手的流量 在 X 原 Twitter 上点击纽约时报 路透社 Facebook Instagram Threads Bluesky 和 Substack 的链接 X 故意增加
  • git的使用——最全操作流程

    目录 一 什么是git 二 添加SSH公钥 三 gitee创建仓库 四 git操作 1 git常用命令 2 用一张图来简单解释一下操作流程 3 流程详解 一 什么是git git是一个开源的分布式版本控制软件 能够有效并高效的处理很小到非常
  • Python学习之路:time和datetime模块

    转自 http blog 51cto com egon09 1840425 一 内建模块 time和datetime http www jb51 net article 49326 htm 在Python中 通常有这几种方式来表示时间 1
  • 加速Nerf训练:nerfacc

    加速Nerf训练 nerfacc 0 引言 1 NerfAcc加速原理 1 1 跳过空区域与遮挡区域 Pruning Empty and Occluded Regions 1 2 GPU层面 1 3 场景压缩 Scene Contracti
  • MongoDB连接本地失败解决办法

    MongoDB连接本地失败解决办法 错误原因 解决办法 在mongodb目录中新建一个data文件夹 如果有就不用建 进入data文件夹 建立db和log两个文件夹 如果有就不用新建 打开CMD 进入到mongodb 的 bin目录 输入指
  • Spring 中的 @Cacheable 缓存注解,太好用了!

    1 什么是缓存 第一个问题 首先要搞明白什么是缓存 缓存的意义是什么 对于普通业务 如果要查询一个数据 一般直接select数据库进行查找 但是在高流量的情况下 直接查找数据库就会成为性能的瓶颈 因为数据库查找的流程是先要从磁盘拿到数据 再
  • 彩虹6号怎么修改服务器,彩虹6号修改服务器地址

    彩虹6号修改服务器地址 内容精选 换一换 修改云服务器信息 目前支持修改云服务器名称及描述和hostname 该接口支持企业项目细粒度权限的校验 具体细粒度请参见 ecs cloudServers put云服务器hostname修改后 需要
  • C#常见简答题

    静态类和静态方法的好处与缺陷 1 好处是 在外部调用静态方法时 可以使用 类名 方法名 的方式 也可以使用 对象名 方法名 的方式 而实例方法只有后面这种方式 也就是说 调用静态方法可以无需创建对象 2 缺陷是 静态方法在访问本类的成员时
  • .el-dialog弹窗垂直居中(重点::兼容IE)

    el dialog display flex display ms flex 兼容IE flex direction column ms flex direction column 兼容IE margin 0 important posit
  • 浮点数与数组的转换

    一 指针方式 include
  • Servlet+JDBC实战开发书店项目讲解第12讲:会员管理功能

    Servlet JDBC实战开发书店项目讲解第12讲 会员管理功能 实现思路 显示会员列表 创建一个管理页面 用于显示所有会员的信息 在后端 创建一个Servlet来处理显示会员列表的请求 在该Servlet中 通过JDBC从数据库中检索会
  • MinGW、GCC、qMake等编译工具的区别

    MSVC在Windows下编译C和C gcc g 分别是GNU的C 和 C 编译器 在Linux 下面用 cmake qmake分别用来编译C和QT工程 输入是makefile 输出结果是可执行文件 编译的过程会调用编译器和连接器来完成整个
  • 百万并发服务器设计

    文章目录 前言 1 改造ntyreactor 2 如何管理eventblock 创建一个eventblock 查找对应fd在那个eventblock上 具体使用 3 总结 前言 本文的基础以及使用的代码模型都继承自上一篇文章 所以请先详细阅
  • 大模型时代下做科研的四个思路

    背景 在模型越来越大的时代背景下 如何利用有限的资源做出一些科研工作 四个方向 1 Efficient PEFT 提升训练效率 这里以PEFT parameter efficient fine tuning 为例 2 Existing st
  • linux查看磁盘IO,网络IO 总结

    一 linux查看磁盘IO 网络 IO可用的命令 1 top 监控整体服务器 cpu 内存 磁盘 网络等 2 dstat d 查看当前磁盘每秒的读取 写入量 单位K 3 dstat r 查看当前磁盘随机的读IOPS 写IOPS 4 dsta
  • 一款简单的角度计算Python包:PyAngle

    一款简单的角度计算Python包 PyAngle GitHub仓库 gzn00417 PyAngle PyPI项目 PyAngle A simple package for angle calculation Use pip install