Skip to main content

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-2025. All our code is GPLv3 licensed.

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.8.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

satellogic_quaternions-0.1.8-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for satellogic_quaternions-0.1.8.tar.gz
Algorithm Hash digest
SHA256 f8c36249cccfdea45a2807cf9c89f4c7a14d3f1068f5942a1956d32a65830858
MD5 55c0e32785e377f1da6bf5dc93324f92
BLAKE2b-256 526be9d20b1a2f16e61a0e4262697f2970589c7fcdf5ea0a17ecfe16df3a2ee0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for satellogic_quaternions-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 7b57c7ef3947b78297843bb8a770cad905ee22e357115d14730b20ba44153c86
MD5 629a0471ed0693410606f2545121e428
BLAKE2b-256 a39a820fa1fa8feec9a3a2305a9193fc168176f39bcbd93b6a0e26f4f0a69b84

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page