Python package for computations of rotations in 3D-space.
Project description
Quaternion
Class for quaternion calculations in python.
Installation
Download from pypi using
pip install karlternion
Example of use
To rotate a vector around and axis
>>> import numpy as np
>>> from karlternion import Quaternion
>>> # Make a rotation around [0, 0, 1] by 45 degree.
>>> q = Quaternion.from_axis_rotation(np.array([0, 0, 1]), np.deg2rad(45))
>>> v = np.array([1, 1, 0]) # Vector to rotate.
>>> q * v # Rotate vector.
array([0.0, 1.41421356e, 0.0])
To make a sequence of rotations, quaternions can be multiplied. Consider a system where you have two rotation axes. The first is Omega, which rotates around [0, 0, 1]. Then another axis, kappa, is mounted on the omega stage (i.e., when omega rotates, so will the kappa axis). When omega is at its origin, the kappa axis is [1, 1, 1].
>>> import numpy as np
>>> from karlternion import Quaternion
>>> omega = Quaternion.from_axis_rotation(np.array([0, 0, 1]), np.deg2rad(20))
>>> kappa = Quaternion.from_axis_rotation(np.array([1, 1, 1]), np.deg2rad(30))
>>> v = np.array([1, 0, 0])
>>> kappa * omega * v
array([ 0.77230395, 0.62470301, -0.1152942 ])
Can also convert to Euler angles,
>>> np.rad2deg((kappa * omega).to_euler())
array([23.53771943, 6.62059431, 38.96878306])
and rotation matrix,
>>> (kappa * omega).to_rotation_matrix()
array([[ 0.77230395, -0.54077305, 0.33333333],
[ 0.62470301, 0.74175595, -0.24401694],
[-0.1152942 , 0.39668958, 0.9106836 ]])
Furthermore, it is also possible to do spherical interpolation, either between two quaternions (Quaternion.slerp) or two vectors.
>>> v1 = np.array([0, 0, 1])
>>> v2 = np.array([0, 1, 0])
>>> Quaternion.slerp_vector(v1, v2, 0.5)
array([0. , 0.70710678, 0.70710678])
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file karlternion-1.0.8.tar.gz.
File metadata
- Download URL: karlternion-1.0.8.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c34df1783ae98b1bfbe8704c590927a5d4d655f871003b097d8f272df9cf7c1
|
|
| MD5 |
b718dc7cb2bfd5b9178be8c84de7f415
|
|
| BLAKE2b-256 |
4cfab5a90db371b242dc43ed9b667f3df75d60ddcf6d810b513064fb5e32e663
|
File details
Details for the file karlternion-1.0.8-py3-none-any.whl.
File metadata
- Download URL: karlternion-1.0.8-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d390a8c0b0950a8c88b253f25e84c3bd675021296bf0b17ff9965745160a3bb
|
|
| MD5 |
2d8b52153d8574977c6d3c95e6c54840
|
|
| BLAKE2b-256 |
1cb63da7486e4ac4ab297d03015169a63df7a7b39ef9be44aa09715aaeaa4e7c
|