使用NumPy数组执行四元数运算
项目描述
欢迎使用rowan文档,rowan是一个用于处理四元数的软件包!四元数是一个具有各种有趣性质的数系,最初是为经典力学开发的。虽然它们后来在很大程度上被矢量数学所取代,但它们已经成为表示三维旋转的标准方法。现在,四元数在计算机图形学和姿态控制等各个领域都广泛用于此目的。
该软件包完全基于NumPy构建,并使用NumPy数组表示四元数,这意味着所有函数都支持任意高维度的四元数数组。四元数编码为形状为(…, 4)的数组,其中数组的最后一个维度(a, b, c, d)代表四元数a + bi + cj + dk。此软件包提供标准代数运算的四元数工具以及一些额外的工具,例如测量四元数之间的距离、在它们之间进行插值以及执行基本的点云映射。rowan软件包的一个重点是处理单位四元数,这是表示3D旋转的一种流行方式。为了提供一个统一的框架来处理3D中的各种旋转形式,rowan允许在这些形式之间轻松转换。
rowan的核心功能包括(但不限于)
代数(乘法、指数等)。
四元数的导数和积分。
旋转和反射操作,以及到和从矩阵、轴角等的转换。
四元数的各种距离度量。
基本点集配准,包括Procrustes问题的解和迭代最近点算法。
四元数插值(slerp、squad)。
入门指南
安装
推荐使用pip或conda安装rowan。要从PyPI安装软件包,请执行
$ pip install rowan --user
要从conda安装软件包,首先添加conda-forge通道,然后安装rowan
$ conda config --add channels conda-forge
$ conda install rowan
如果您愿意,也可以通过克隆存储库并运行设置脚本安装rowan
$ git clone https://github.com/glotzerlab/rowan.git
$ cd rowan
$ python setup.py install --user
使用rowan的最低要求是
Python >= 3.6
NumPy >= 1.15
快速入门
此库可以通过实例化适当的NumPy数组并将它们传递到所需的函数中来与四元数一起工作。例如
import rowan
import numpy as np
one = np.array([10, 0, 0, 0])
one_unit = rowan.normalize(one)
assert(np.all(one_unit == np.array([1, 0, 0, 0])))
if not np.all(one_unit == rowan.multiply(one_unit, one_unit)):
raise RuntimeError("Multiplication failed!")
one_vec = np.array([1, 0, 0])
rotated_vector = rowan.rotate(one_unit, one_vec)
mat = np.eye(3)
quat_rotate = rowan.from_matrix(mat)
alpha, beta, gamma = rowan.to_euler(quat_rotate)
quat_rotate_returned = rowan.from_euler(alpha, beta, gamma)
identity = rowan.to_matrix(quat_rotate_returned)
运行测试
该软件包目前已在Unix-like系统上对Python >= 3.6进行了测试。使用CircleCI在这些Python版本上使用NumPy版本1.15及以上版本进行持续集成测试。
要从存储库的根目录运行软件包的单元测试,请执行以下行
python -m unittest discover tests
要检查测试覆盖率,请确保已安装覆盖率模块
pip install coverage
然后使用覆盖率模块运行软件包的单元测试
coverage run -m unittest discover tests
运行基准测试
软件包的基准测试包含在存储库根目录中的benchmarks文件夹中的Jupyter笔记本中。如果您没有或不想使用笔记本格式,还包括一个等效的Benchmarks.py脚本。这些基准测试将rowan与两个替代软件包进行比较,因此如果您想查看这些比较,则需要安装pyquaternion和numpy_quaternion。
构建文档
您还可以通过克隆存储库从源代码构建此文档。文档是用reStructuredText编写的,并使用Sphinx编译的。要从源代码构建,首先安装Sphinx
pip install sphinx sphinx_rtd_theme
然后您可以使用Sphinx在rowan根目录中运行以下命令来创建实际的文档(PDF或HTML形式)
cd doc
make html # For html output
make latexpdf # For a LaTeX compiled PDF file
open build/html/index.html
支持和贡献
此软件包托管在GitHub上。请将您发现的任何错误或问题报告到问题跟踪器。
所有对Rowan的贡献都欢迎通过pull requests(拉取请求)方式提交!请参阅开发指南获取有关新代码要求的更多信息。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。