齐次变换矩阵和四元数
项目描述
Transformations是一个Python库,用于计算3D齐次坐标数组进行平移、旋转、反射、缩放、剪切、投影、正交化和叠加的4x4矩阵,以及将旋转矩阵、欧拉角和四元数之间进行转换。还包括一个Arcball控制对象和分解变换矩阵的函数。
Transformations库不再积极开发。
- 作者:
- 许可证:
BSD 3-Clause
- 版本:
2024.5.24
快速入门
从Python包索引安装Transformations包及其所有依赖项。
python -m pip install -U transformations
请参阅示例以了解如何使用编程接口。
源代码和支持可在GitHub上找到。
需求
此修订版已与以下需求和依赖项进行测试(其他版本可能也适用)
修订版
2024.5.24
修复GitHub上docstring示例未正确渲染的问题。
2024.4.24
支持NumPy 2。
2024.1.6
移除对Python 3.8和numpy 1.22(NEP 29)的支持。
2022.9.26
在叠加矩阵上添加维度检查(#2)。
2022.8.26
更新元数据。
移除对Python 3.7(NEP 29)的支持。
2021.6.6
移除对Python 3.6(NEP 29)的支持。
2020.1.1
移除对Python 2.7和3.5的支持。
2019.4.22
修复设置要求。
注意
Transformations.py不再积极开发,存在一些已知问题和数值不稳定性。该模块主要被其他3D变换和四元数模块所取代。
API 还不稳定,预计在版本之间会发生变化。
此 Python 代码未针对速度进行优化。有关某些函数的更快实现,请参考 transformations.c 模块。
可以使用 epydoc 生成 HTML 格式的文档。
可以使用 numpy.linalg.inv(M) 使用 numpy.linalg.inv(M) 逆矩阵,使用 numpy.dot(M0, M1) 连接矩阵,或者使用 numpy.dot(M, v) 转换齐次坐标数组 (v),其中 v 为形状 (4, -1) 的列向量,分别使用 numpy.dot(v, M.T) 转换形状 (-1, 4) 的行向量(“点数组”)。
此模块遵循“右列列向量”和“行主存储”(C 连续)约定。平移分量位于变换矩阵的右侧列,即 M[:3, 3]。可能需要使用变换矩阵的转置来与其他图形系统接口,例如 OpenGL 的 glMultMatrixd()。另请参阅 [16]。
计算使用 numpy.float64 精度执行。
期望向量、点、四元数和矩阵函数参数为“类似数组”,即元组、列表或 numpy 数组。
除非另有说明,返回类型为 numpy 数组。
除非另有说明,角度以弧度为单位。
四元数 w+ix+jy+kz 表示为 [w, x, y, z]。
三个欧拉角可以以 24 种方式应用/解释,可以使用 4 个字符字符串或编码 4-元组进行指定。
轴 4 字符串:例如,'sxyz' 或 'ryxy'
第一个字符:应用于 's' 静态或 'r' 旋转框架的旋转
其余字符:连续旋转轴 'x'、'y' 或 'z'
轴 4-元组:例如,(0, 0, 0, 0) 或 (1, 1, 1, 1)
内轴:最右侧矩阵的轴代码('x':0,'y':1,'z':2)
奇偶性:如果内轴 'x' 后跟 'y','y' 后跟 'z',或 'z' 后跟 'x',则偶数(0)。否则为奇数(1)。
重复:第一个和最后一个轴相同(1)或不同(0)。
框架:旋转应用于静态(0)或旋转(1)框架。
参考文献
矩阵和变换。罗纳德·戈尔登。在“图形宝石 I”中,第 472-475 页。Morgan Kaufmann,1990 年。
更多矩阵和变换:剪切和伪透视。罗纳德·戈尔登。在“图形宝石 II”中,第 320-323 页。Morgan Kaufmann,1991 年。
将矩阵分解为简单变换。斯宾塞·托马斯。在“图形宝石 II”中,第 320-323 页。Morgan Kaufmann,1991 年。
从变换矩阵中恢复数据。罗纳德·戈尔登。在“图形宝石 II”中,第 324-331 页。Morgan Kaufmann,1991 年。
欧拉角转换。肯·绍梅克。在“图形宝石 IV”中,第 222-229 页。Morgan Kaufmann,1994 年。
弧球旋转控制。肯·绍梅克。在“图形宝石 IV”中,第 175-192 页。Morgan Kaufmann,1994 年。
表示姿态:欧拉角、单位四元数和旋转矢量。詹姆斯·迪贝尔。2006 年。
讨论解决两个向量集之间最佳旋转的方案。W Kabsch。Acta Cryst. 1978. A34,827-828。
使用单位四元数的绝对方位的闭式解。BKP Horn。J Opt Soc Am A. 1987. 4(4):629-642。
四元数。肯·绍梅克。http://www.sfu.ca/~jwa3/cmpt461/files/quatut.pdf
从四元数到矩阵及其返回。JMP van Waveren。2005 年。http://www.intel.com/cd/ids/developer/asmo-na/eng/293748.htm
均匀随机旋转。肯·绍梅克。在“图形宝石 III”中,第 124-132 页。Morgan Kaufmann,1992 年。
分子建模中的四元数。CFF Karney。J Mol Graph Mod,25(5):595-604
从旋转矩阵中提取四元数的新方法。Itzhack Y Bar-Itzhack,J Guid Contr Dynam。2000。23(6):1085-1087。
计算机视觉中的多视图几何。作者:Hartley和Zissermann。剑桥大学出版社;第2版。2004年。第4章,算法4.7,第130页。
列向量与行向量。http://steve.hollasch.net/cgindex/math/matrix/column-vec.html
示例
>>> alpha, beta, gamma = 0.123, -1.234, 2.345 >>> origin, xaxis, yaxis, zaxis = [0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1] >>> I = identity_matrix() >>> Rx = rotation_matrix(alpha, xaxis) >>> Ry = rotation_matrix(beta, yaxis) >>> Rz = rotation_matrix(gamma, zaxis) >>> R = concatenate_matrices(Rx, Ry, Rz) >>> euler = euler_from_matrix(R, 'rxyz') >>> numpy.allclose([alpha, beta, gamma], euler) True >>> Re = euler_matrix(alpha, beta, gamma, 'rxyz') >>> is_same_transform(R, Re) True >>> al, be, ga = euler_from_matrix(Re, 'rxyz') >>> is_same_transform(Re, euler_matrix(al, be, ga, 'rxyz')) True >>> qx = quaternion_about_axis(alpha, xaxis) >>> qy = quaternion_about_axis(beta, yaxis) >>> qz = quaternion_about_axis(gamma, zaxis) >>> q = quaternion_multiply(qx, qy) >>> q = quaternion_multiply(q, qz) >>> Rq = quaternion_matrix(q) >>> is_same_transform(R, Rq) True >>> S = scale_matrix(1.23, origin) >>> T = translation_matrix([1, 2, 3]) >>> Z = shear_matrix(beta, xaxis, origin, zaxis) >>> R = random_rotation_matrix(numpy.random.rand(3)) >>> M = concatenate_matrices(T, R, Z, S) >>> scale, shear, angles, trans, persp = decompose_matrix(M) >>> numpy.allclose(scale, 1.23) True >>> numpy.allclose(trans, [1, 2, 3]) True >>> numpy.allclose(shear, [0, math.tan(beta), 0]) True >>> is_same_transform(R, euler_matrix(axes='sxyz', *angles)) True >>> M1 = compose_matrix(scale, shear, angles, trans, persp) >>> is_same_transform(M, M1) True >>> v0, v1 = random_vector(3), random_vector(3) >>> M = rotation_matrix(angle_between_vectors(v0, v1), vector_product(v0, v1)) >>> v2 = numpy.dot(v0, M[:3, :3].T) >>> numpy.allclose(unit_vector(v1), unit_vector(v2)) True
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。
源分布
构建分布
transformations-2024.5.24.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 960328ce2f5e1dad8025b1b82c8588afbc57644c609899c5b9508af965cd7bc0 |
|
MD5 | 4c5350c7a495faf117ca7e88075f3193 |
|
BLAKE2b-256 | f3bd13cf3d21afdd64ed3f6dcdf0d0a70329549c5fb8759a634a35e27905b74a |
transformations-2024.5.24-cp312-cp312-win_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bbb74d4701be2fc7852c80493e2b92cd52485d4712ce8bfc03c92fb7bdd365c5 |
|
MD5 | f6df647b50fa3e12b69ad602808036bb |
|
BLAKE2b-256 | 12850df8620f942e4beaa1cd2560cfd0d7a5444c38e41efb0aa13a0c11a24675 |
transformations-2024.5.24-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d81ed1df5dbdd204cd447728cc5b44d4bf1ccd4af5401ee61032477f5de5788b |
|
MD5 | 4d58ef873a43600e50497d7864cd9607 |
|
BLAKE2b-256 | 85e6d7e412940e3640891e165634765ad705677685c285c53d1627c02cd76777 |
transformations-2024.5.24-cp312-cp312-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f713ac891a46abfd98158c8a72166a1f92ebaba1644dc8aa59b5357391d6d9e0 |
|
MD5 | 8e56be5d2e3abfc9f4ccefb239db381a |
|
BLAKE2b-256 | 1e1cd7abfdfbbe46a99cfff8840e79da4b503f6d4c9e84f86c9ec16f34f781cb |
transformations-2024.5.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2f87541e8bb87337b8bc1839188d07ad922124f23ce1eca1ce4c6f5bcf5f1e4f |
|
MD5 | 60a04b51da1bb9d8f0bfcde6f5709d31 |
|
BLAKE2b-256 | 4e22b8bdbb6388364ca2720f45a91fae8c7f03e8cbed28902b1fdc2961e253ad |
transformations-2024.5.24-cp312-cp312-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a655966a893ade762f12946c02e3ffa5cd826cf0866e9587e46f812d494ad56e |
|
MD5 | c0fa28cf36d546eb2920258b6a598901 |
|
BLAKE2b-256 | 53a6ff7e1e17978c794c73cfc19fe78b376260ffe7c4d7328a7ae46de593a97c |
transformations-2024.5.24-cp312-cp312-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf0a5f141dcf84a7b5efb27747c2b852d1f9cc8d621d3bdc17fb2f9ac37eaee3 |
|
MD5 | 51f301c41767fa351404fd5b5c56ef8b |
|
BLAKE2b-256 | d71f68ff4a6369eb5fad8df4f1c54149ecaed8819a45376cf8d160b43a6e52e6 |
哈希值 为 transformations-2024.5.24-cp311-cp311-win_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be69c3055aa341db7bd231d979ebaae1e64417246a6792c1d03631193edde442 |
|
MD5 | 4ee6d569c88e7cda393536634e421452 |
|
BLAKE2b-256 | de94479a93a9cb3a556fb632bb3eab801a27a04b46d3b5670138819c560fca5d |
哈希值 为 transformations-2024.5.24-cp311-cp311-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 22fd2283b4aa51609ce3d6929add2fef656f049c5cfa291cc6abfdae2a329f7f |
|
MD5 | 6467087958efa5beaeb0d77c63d40ee0 |
|
BLAKE2b-256 | 8dfb9ec0af1e316a87b3213c299ab10623530a033a5deee297a00771acaedec2 |
哈希值 为 transformations-2024.5.24-cp311-cp311-win32.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c76e772b77d4665440dac82b36485565e0e0d4ef3679b48ef4449b73935e44fb |
|
MD5 | d52b253932486c57b5b120d36b2822a3 |
|
BLAKE2b-256 | 6c95d0534e51c78efd66291fbcd8fc10c2a8939a8c61a6d4be1e233d612f39f7 |
哈希值 为 transformations-2024.5.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fba5109b455836829ce6476ba53c16f6e72187340084d004dcfac9bf11a2bfd7 |
|
MD5 | 57614b8d0685acf6be9564ca2870637b |
|
BLAKE2b-256 | 745a31ad7b50c36aef716eecbcade4cba064ce876f497d94f096a607c7a6837d |
哈希值 为 transformations-2024.5.24-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 575d0b5d8c2c92931da46fc55568f17f7b306334ba25fa6091ac5708808bfbfc |
|
MD5 | 38070475226fdfbca988fcf40ed8dd9a |
|
BLAKE2b-256 | bac98e63672087e2836636bdd80b6d97f44075be64325ec7e3048bfb54511940 |
哈希值 为 transformations-2024.5.24-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1290cdcb65067809cd8dd4b3c3ab552fb6b50e99c015c1678618de2b67913b72 |
|
MD5 | 4e8bd8ae0df4ec24522f2855a98a1075 |
|
BLAKE2b-256 | b7e99f00108679b17b4684fdd7e7f03e2530cae7e157f035acdb3ec1aaf5053e |
哈希值 为 transformations-2024.5.24-cp310-cp310-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c599f0140f18f590c50992f5011593ce08e4b893ff26fde4bf7bf5e0db1d9c60 |
|
MD5 | 68669191ec9dcd7dded8af2a8898c13f |
|
BLAKE2b-256 | c688702aeb0fe435ba764350d49ba58b73797aa489c819204d1aaa821fed1029 |
哈希值 为 transformations-2024.5.24-cp310-cp310-win32.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ddcec2e35a05a3f81a318c4d7184a4c347b85030cdbc36fdad92c7eb2ba70d4 |
|
MD5 | 01a2464f59beb16ce93112e45fbe4e39 |
|
BLAKE2b-256 | b3156b70b648740e6edc0965c467fb4bd6cf8f3f622a33a248fc9d33207e45b9 |
哈希值 为 transformations-2024.5.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc36351fed3d7bc2d413bab358828870f02a41d71723033032d08e2e75361892 |
|
MD5 | 8114e62987158e59d5e3e304bc49213b |
|
BLAKE2b-256 | 16770277da84815bc7868d439d3c97cf15d074b4d5e4ff6a4ad7c2c3e78a7bef |
哈希值 为 transformations-2024.5.24-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c3c6b07e1d0d9714f3ccd163785845ff780df26ab094ed125b11d0922c4fee7 |
|
MD5 | f7d0b9480ad2b8f77e73a15cbce65598 |
|
BLAKE2b-256 | 52137eef15dfc6f53d545860a0c9ae68e3f2627e34146b8bf0261db463b80f6a |
哈希值 为 transformations-2024.5.24-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b538ec7fc815c4ab6f427e339eb1a4eddd46860fff306f8f7c6eb80167d08d28 |
|
MD5 | 91c2f97c5c96001d7a3c6b960bf58f75 |
|
BLAKE2b-256 | 5a68ac72909a1fb191ffbe5a3c300fe264238b22ffeeae5b3f8dad58643d2a16 |
哈希值 为 transformations-2024.5.24-cp39-cp39-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dda37a7683acb10068c491b6d33bdbdbfb1a1ea4a3291639b23ee4a0af42138c |
|
MD5 | fc0a950f5c8b32f9c050f12c88eef7c4 |
|
BLAKE2b-256 | eb65e230ca6e7ba00cccd3d69d2fbf8429e0853cc2134e8b051f27a398bdbd90 |
哈希值 用于 transformations-2024.5.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 00b20a57cfe4b5f5fadf957bff68c40a86437f85e75b2ed655b87beb45d62940 |
|
MD5 | 6e5117014a2813c6a5be70c6f0aa035f |
|
BLAKE2b-256 | f41b64b3a2d70f0c3c876246dd3a6cc7d1e6a240e77e318657284df3769e82d3 |
哈希值 用于 transformations-2024.5.24-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 29f4ebee83c2fb6857f7dbb15917e39bc6bed1f309179452a0dfeda37e2d4d0d |
|
MD5 | 03ea34a69ca8dbeab0540f92d42de5ee |
|
BLAKE2b-256 | 4cb40571239989e1836d6d2cc6886223e33de386e8d33cbff479e7f9a9d184ca |
哈希值 用于 transformations-2024.5.24-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d70a175f7baff6cc70236f74d51c5adb14a3cc3d89fc2e108c1f086f9a834e88 |
|
MD5 | bc03257cdf41cb550a4e30c544b21e5e |
|
BLAKE2b-256 | 4835cdcf7179ad5466608b42b9ba7475665e8540da50fab98a3b7d9433119587 |