Skip to main content

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

Project description

Quaternions library

Coverage Status Build Status

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. 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.6.tar.gz (22.0 kB 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.6-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: satellogic_quaternions-0.1.6.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for satellogic_quaternions-0.1.6.tar.gz
Algorithm Hash digest
SHA256 55d705ae62613f90f9aa49e9046f270bfe52379cb6f5aa9f273c3a75c999ef4a
MD5 86808d24d399ff8d37bd1c256c845523
BLAKE2b-256 14826c00dcc7fe033da55ba661ec62527247aae54ebc25657aaee33665c5c1d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: satellogic_quaternions-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for satellogic_quaternions-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 929f247b30ebb83b477425f1ed2dd5d0f679dffd214ea5995aea8633d0627c91
MD5 4500bcdc24fa3c19c246e2cd12a7697f
BLAKE2b-256 e16a0a6e31763a980f0a110e3042ca8c00e1d7fcbd98e1fc420bb8945ce37204

See more details on using hashes here.

Supported by

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