View and work on plenoscope events
Project description
Define, sequence, and apply transformations in 3D. Taken from merlict_c89_link and wrapped in python with a numpy friendly interface.
Define
t_civil = {
"pos": [1.0, 0.0, 0.0],
"rot": {
"repr": "axis_angle",
"axis":[0.0, 0.0, 1.0],
"angle_deg": 0.3,
},
}
Transformations can be defined with a civil representation in a dict. The rotation can be represented by either ‘axis_angle’, ‘tait_bryan’, or ‘quaternion’. To apply the transformation we compile it.
import homogeneous_transformation as ht
t = ht.compile(t_civil)
The civil representation can be compiled into a compact numpy array t of shape (7, ).
In : t
Out: array([1. , 0. , 0. , 0.99999657, 0. , 0. , 0.00261799])
The first 3 fields are the translation vector and the remaining 4 fields are the rotation quaternion. One can also export this with to_matrix into a homogenous transformation matrix of shape (4, 4).
In : ht.to_matrix(t)
Out:
array([[ 0.99998629, -0.00523596, 0. , 1. ],
[ 0.00523596, 0.99998629, 0. , 0. ],
[ 0. , 0. , 1. , 0. ],
[ 0. , 0. , 0. , 1. ]])
Sequence
Transformations in compact representation can be concatenated to compute the sequence.
t_ab = ht.sequence(t_a, t_b)
Apply
Apply transformations to positions, orientations, or rays.
import numpy as np
vec = np.array([0, 0, 1])
t_vec = ht.transform_position(t, vec)
Here vec can either be a single vector of shape (3, ) or an array of N vectors with shape (N, 3). The loop over the individual vectors is in the C backend and thus very efficient.
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
Hashes for homogeneous_transformation-0.0.1.1.7.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c46bab5e96bf360f9384e7ca7e550ce15ca7a69718d2d012cca0355251e5feb8 |
|
MD5 | c9ca48a21db4b630be0487b50c617d8b |
|
BLAKE2b-256 | f44e54f45f88d331fde0c25e7e81f4f30fdf4176e5e40e78d5ad89b14fbaa17d |