Commit graph

49 commits

Author SHA1 Message Date
Mateo de Mayo d773ab4cf2 a/math: Add pose interpolate function and others
- math_matrix_4x4_isometry_from_pose
- math_pose_from_isometry
- math_pose_interpolate
- m_vec3_equal
2022-06-18 14:19:01 -03:00
Campbell Suter 0f8da1900b a/math: Fix math_pose_invert breaking on rotated poses, and add a test
Previously, math_pose_invert would apply a multiplication in the wrong
order. This lead to the position of the 'original' pose being rotated.

This patch fixes that, and adds a unit test to check this case.
2022-06-01 16:44:03 +01:00
Mateo de Mayo 29aefe2ba8 misc: Use pretty printers and remove stale matrix print functions
Use u_pp_matrix_* instead.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 05b8e320a5 a/math: Add multiple isometry-related matrix functions
An isometry is a rigid body transform. In this context I'm using the term to
refer to 4x4 homogeneous matrices in SE(3). I.e., matrices comprised of a
3x3 rotation, a 3x1 translation, and a [0,0,0,1] last row.
This matrix represent both rigid body transforms.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 8b2fa955b9 a/math: Fix matrix identities and use isometry
Isometry3f is a 4x4 matrix transform that performs only rotation and translation
(an SE(3) matrix). Its inverse can be computed trivially by Eigen compared to a
regular 4x4 transform.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 2212cf95cf a/math: Add missing extern C 2022-05-26 18:35:39 +00:00
nima01 232b3bade5 aux/math: More double-precision matrix and vector support 2022-04-25 19:14:46 +00:00
Mateo de Mayo 06597a0655 a/math: Add math_quat_{len, unrotate} 2022-02-14 10:22:05 -03:00
Jakob Bornecrantz 98982bd25b a/math: Fix warning in math_matrix_2x2_multiply 2021-12-07 13:30:45 +00:00
Jan Schmidt bb5aa35c00 a/math: Add math_matrix_3x3_identity()
Add an initialisation function to set a 3x3 matrix
to the identity matrix.
2021-12-05 00:06:05 +11:00
Jakob Bornecrantz 62ca16c70e a/math: Make sure it's safe to pass in the result as either left or right 2021-11-12 10:27:54 +00:00
Ryan Pavlik a10a4ab123 a/math: Fix truncation warning due to double literal in float parameter. 2021-09-20 10:06:33 -05:00
Jakob Bornecrantz 70ceabb56e m/mat4: Add Matrix 4x4 f64 functions 2021-08-17 12:04:49 +01:00
Dan Weatherford fabf01ff39 aux/math: Add math_quat_slerp() 2021-06-25 17:40:07 +01:00
Jan Schmidt 4581a7a9a6 aux/math: Implement math_matrix_3x3_inverse.
Add a function to invert 3x3 matrices, to reverse 2D
affine transforms.
2021-06-25 17:40:07 +01:00
Ryan Pavlik 265c49d337 a/math: Move functionality into official namespaces. 2021-05-04 11:04:32 -05:00
Moses Turner a027852767 aux/math: implement math_pose_identity. 2021-04-01 02:02:26 +02:00
Moses Turner c776a19e15 aux/math: Implement math_matrix_3x3_multiply. 2021-04-01 02:02:26 +02:00
Jakob Bornecrantz 026fa2cebb math: Add quat valdiate that only checks within 1% of unit length 2021-01-21 00:33:32 +00:00
Jakob Bornecrantz 2b996f30c4 xrt: Reflow after column change 2021-01-15 13:50:32 +00:00
Lubosz Sarnecki bd68c0e5f5 aux/math: Implement math_matrix_2x2_multiply. 2020-11-27 16:50:55 +01:00
Lubosz Sarnecki 7035490ed7 aux/math: Implement math_matrix_4x4_inverse_view_projection. 2020-10-26 01:34:10 +00:00
Christoph Haag 256e2c68d8 xrt: Implement & hook up hand joint tracking infrastructure
Include <inttypes.h> to satisfy older compilers
2020-10-12 22:13:47 +02:00
Jakob Bornecrantz 5a4d45bbaa m/base: Remove old space relation functions 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz ca91695722 m/quat: Add math_quat_rotate_derivative 2020-09-07 16:14:46 +01:00
Jakob Bornecrantz 328f5d5315 m/base: Add math_quat_invert 2020-09-02 22:07:35 +01:00
Christoph Haag 370f6820aa m: Generalize math_matrix_4x4_quad_model, making scaling a vec3 2020-08-21 02:11:03 +02:00
Lubosz Sarnecki 87a5c425cf a/math: Add math_vec3_normalize. 2020-07-31 12:45:47 +02:00
Christoph Haag 7a1dbbe8a1 st/oxr: Ensure quaternion is normalized in xrLocateViews()
In rare cases the state tracker's pose transformations resulted in a quaternion
that accumulated float precision errors such that the norm of the quaternion was
not within float precision of 1.0 anymore.

Introduce a function math_quat_ensure_normalized() that can be used after multiple
operations have been performed on a quaternion.
2020-06-17 13:03:34 +02:00
Lubosz Sarnecki fc271ad5da aux/math: Add function to calculate quad model matrix. 2020-05-28 22:16:57 +00:00
Jakob Bornecrantz 9d791cdfd3 math: Use non-squared 'length' of quat in validation
Correctly validate quaternion using non-squard "length" instead of squard
"length", certain combinations of elements would produce valid regular "length"
but not valid squard ones.
2020-05-28 15:50:47 +01:00
Lubosz Sarnecki 6aa1b4e571 aux/math: Add function to calculate view matrix from pose. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 0b6d97ec8f aux/math: Add matrix_4x4 identity and matrix_4x4_muliply. 2020-05-11 20:21:58 +01:00
Jakob Bornecrantz 23a66eb031 aux/math: Add math_matrix_3x3_rotate_vec3 function 2020-03-25 13:58:51 +00:00
Jakob Bornecrantz 21e77b85d7 aux/math: Add quat from angle vector function 2020-03-25 13:58:51 +00:00
Jakob Bornecrantz 5bf65b41fa math: Add some more functions 2020-01-14 15:59:41 +00:00
Jakob Bornecrantz 998b198b44 math: Fix math_pose_invert 2020-01-13 10:37:14 +00:00
Jakob Bornecrantz 7618f4c5a4 math: Make it possible to get a rotation from a rotation matrix 2020-01-09 15:22:14 +00:00
Jakob Bornecrantz 50d28369c4 m/headers: Rename C++ headers to hpp and tidy headers 2019-11-21 14:54:17 +00:00
Jakob Bornecrantz acd2c50470 aux/math: Rework offset transformation
This reverts commit 0d9aaae470, and changes it.
2019-10-08 11:19:14 +01:00
Jakob Bornecrantz 0d9aaae470 aux/math: Correct(?) transform 2019-10-08 01:04:46 +00:00
Jakob Bornecrantz b95e114160 aux/math: Code style, pointer star location 2019-09-29 11:45:23 +01:00
Ryan Pavlik 11c5518aa0 aux/math: Simplify 2019-08-16 17:12:53 -05:00
Jakob Bornecrantz 505d5cf5d6 aux/math: C export paranoia 2019-07-21 14:57:45 +00:00
Jakob Bornecrantz 776c46713f aux/math: Refactor math_pose_validate into two functions 2019-07-21 14:57:45 +00:00
Ryan Pavlik 2b006d5df7 aux/math: Add quaternion normalization 2019-06-22 11:34:51 +01:00
Ryan Pavlik 9635952165 aux/math: Codespell fix 2019-06-18 13:09:59 -05:00
Jakob Bornecrantz 6fb8a216a3 aux/math: Group the files and structs in documentation 2019-04-06 13:05:35 +01:00
Jakob Bornecrantz 15a97422ba xrt: Add all of Monado 2019-03-18 05:52:32 +00:00