This is a library for dealing with quaternions in Python in a unified way.
Project description
Quaternions library
This is a library for dealing with quaternions in python in a unified way.
To install it:
$ pip install satellogic_quaternions
Examples of code:
In [1]: from quaternions import Quaternion
In [2]: q1 = Quaternion(1, 2, 3, 4)
In [3]: q2 = Quaternion(2, 3, 5, 8)
In [4]: q1 + q2
Out[4]: Quaternion(3, 5, 8, 12)
In [5]: q1 * q2
Out[5]: Quaternion(-51, 3, 15, 15)
In [6]: q1 / q2
Out[6]: Quaternion(0.53921568627450989, 0.049019607843137247, -0.029411764705882353, 0.0098039215686274439)
In [7]: print(q1)
(1+2i+3j+4k)
Most of all the quaternions we use are unitary (not like the example above)
In [8]: q1.is_unitary()
Out[8]: False
In [9]: q1 / q1.norm()
Out[9]: Quaternion(0.18257418583505536, 0.36514837167011072, 0.54772255750516607, 0.73029674334022143)
In [10]: q1 /= q1.norm()
In [11]: q1.is_unitary()
Out[11]: True
Usually, quaternions are used for rotating vectors. This is done with numpy
:
In [12]: q1.matrix
Out[12]:
array([[-0.66666667, 0.66666667, 0.33333333],
[ 0.13333333, -0.33333333, 0.93333333],
[ 0.73333333, 0.66666667, 0.13333333]])
In [14]: q1.matrix.dot([2, 3, -4])
Out[14]: array([-0.66666667, -4.46666667, 2.93333333])
In [16]: q1.matrix.dot([1, 0, 0])
Out[16]: array([-0.66666667, 0.13333333, 0.73333333])
A unitary quaternion matrix is unitary. The inverse is the transpose and it is also the matrix of the inverse quaternion. And the inverse quaternion of a unitary quaternion is the conjugate:
In [17]: q1.conjugate()
Out[17]: Quaternion(0.18257418583505536, -0.36514837167011072, -0.54772255750516607, -0.73029674334022143)
In [18]: q1
Out[18]: Quaternion(0.18257418583505536, 0.36514837167011072, 0.54772255750516607, 0.73029674334022143)
In [19]: q1 * q1.conjugate()
Out[19]: Quaternion(0.99999999999999978, 0.0, 0.0, 0.0)
In [20]: q1.conjugate().matrix
Out[20]:
array([[-0.66666667, 0.13333333, 0.73333333],
[ 0.66666667, -0.33333333, 0.66666667],
[ 0.33333333, 0.93333333, 0.13333333]])
License
quaternions is Satellogic SA Copyright 2017-2022. All our code is GPLv3 licensed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file satellogic_quaternions-0.1.7.tar.gz
.
File metadata
- Download URL: satellogic_quaternions-0.1.7.tar.gz
- Upload date:
- Size: 21.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b4fbb9463b9d83bb7524b1257ed82f41bf953132f442a470a384ee3b6d8bb13 |
|
MD5 | b9783b14a8039719a29bdf3a601ea134 |
|
BLAKE2b-256 | f01da572988073dca95da86503a4d3f93d2a8d4214c890e5ab5cd7906fb8af92 |
File details
Details for the file satellogic_quaternions-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: satellogic_quaternions-0.1.7-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f76ab7e10e2e680acdd45348dfce1f9de8d712df2b690a045d56d2306d40cdf1 |
|
MD5 | 2488be18337986c244535e97004b6309 |
|
BLAKE2b-256 | e64b158112fd855973f13106170ad3d96af594e2014361eb302b7d5e4e25582d |