Skip to main content

This is a library for dealing with quaternions in Python in a unified way.

Project description

Quaternions library

Coverage Status CI

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

satellogic_quaternions-0.1.7.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

satellogic_quaternions-0.1.7-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file satellogic_quaternions-0.1.7.tar.gz.

File metadata

File hashes

Hashes for satellogic_quaternions-0.1.7.tar.gz
Algorithm Hash digest
SHA256 6b4fbb9463b9d83bb7524b1257ed82f41bf953132f442a470a384ee3b6d8bb13
MD5 b9783b14a8039719a29bdf3a601ea134
BLAKE2b-256 f01da572988073dca95da86503a4d3f93d2a8d4214c890e5ab5cd7906fb8af92

See more details on using hashes here.

File details

Details for the file satellogic_quaternions-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for satellogic_quaternions-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 f76ab7e10e2e680acdd45348dfce1f9de8d712df2b690a045d56d2306d40cdf1
MD5 2488be18337986c244535e97004b6309
BLAKE2b-256 e64b158112fd855973f13106170ad3d96af594e2014361eb302b7d5e4e25582d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page