- Updated to Rust edition 2024.
- Optimized
UnitQuaternion::adjust_normfor norms close to 1, avoiding an expensivesqrtand division in the common case. - Updated
nalgebrato version 0.35.0. - Updated
serde_jsonto 1.0.150. - Updated C++ benchmark dependencies to their latest versions (
boost.qvm,eigen,google_benchmark,rules_cc,bazel_clang_tidy).
- Optimized
UnitQuaternion::rotate_vectorto use fewer flops. - Optimized
UnitQuaternion::to_rotation_vectorfor thef32type. Benchmarks show that the speed-up is more than 2x while accuracy is approximately the same. Compared toquaternion_corethe speed-up is roughly 10x and compared tonalgebrathe speed-up is roughly 6x. It also beats all benchmarked C++ libraries with a speed-up of more than 2x. - Rewrote Chebyshev approximation program, so it works for arbitrary smooth functions, not only for power series.
- Wrote benchmark to check the accuracy of computing a scaled rotation vector
from a quaternion and back with
f32precision. All crates have similar root mean square errors of this round trip which are all below af32epsilon and above half an epsilon. - Updated Bazel version to 8.5.0.
- Updated all Bazel modules to their latest versions.
- Updated
randto version 0.10.0 andrand_distrto version 0.6.0. - Updated minimum required Rust version to 1.85.0.
Contributors: @ralphtandetzky
- Fixed broken Links in Rustdoc documentation.
- Updated dependencies:
serdecriterionnalgebraserde_jsonquaternion-core
Contributors: @ralphtandetzky
- Optimized
UnitQuaternion::from_rotation_vectorfor small vectors of length less than pi. Speedups of 3x are observed. - Added benchmarks for
UnitQuaternion::from_rotation_vector. - Updated
nalgebradependency to version0.34. - Improved CI by checking C++ code formatting and run clang-tidy.
- Fixed all warnings reported by clang-tidy in C++ benchmarks.
- Added instructions for AI agents to contribute to the project.
Contributors: @ralphtandetzky
- Updated versions of dependencies in C++ benchmarks.
- Updated
criterionto version0.7. - Updated minimum supported Rust version to 1.85.0.
Contributors: @ralphtandetzky
- Added
PureQuaterniontype. - Added missing arithmetic operations, such as
MutAssignandDivAssigntraits forUnitQuaternion. - Fixed numerical inaccuracy in the
lnmethod ofQuaternionin edge cases. - Updated pull request template.
- Updated dependency
serdeto version1.0.218. - Updated dependency
serde_jsonto version1.0.139.
Contributors: @ralphtandetzky
- Added Bazel build to CI.
- Improved PR template.
- Updated dependency
randto version0.9. - Updated dependency
rand_distrto version0.5.1. - Updated dependency
quaternionto version2.0.
Contributors: @ralphtandetzky
- Avoid
num-integerpulling instdby default
Contributors: Zachary Catlin
- Added benchmarks to measure run-time and accuracy of
normand compare against other Rust crates and C++ libraries. - Improved run-time and accuracy of
norm. - Updated Minimum Supported Rust Version from 1.61 to 1.63.
Contributors: @ralphtandetzky
- Improved and updated high-level documentation. Issue #106
Note: There have been no breaking API changes in this release. The major version update only signals the maturity and stability of the crate. (There have not been any breaking changes since version 0.2.0, in fact.)
Contributors: @ralphtandetzky
- Added
pose_animationexample. - Added Rustdoc code examples for all methods.
Contributors: @ralphtandetzky
- Split
lib.rsinto new modulesquaternion,unit_quaternion, andarithmetics.
Contributors: @ralphtandetzky
- Reached 100% test coverage.
Contributors: @ralphtandetzky
- Added
randfeature to crate. - Implemented sampling
UnitQuaternion<T>from a uniform distribution. - Increased test coverage.
Contributors: @ralphtandetzky
- Fix bug in gimbal lock case of
UnitQuaternion::to_euler_angles. - Improved test coverage.
Contributors: @ralphtandetzky
- Fixed edge case in
Quaternion::ln. - Added scripts for test coverage.
- Improved test coverage.
Contributors: @ralphtandetzky
- Added
has_nanandis_all_nanmethods forQuaternion<T>. - Improved documentation and tests.
Contributors: @ralphtandetzky
- Improved documentation.
- Added
to_innermethod forUnitQuaternion<T>. - Made
is_finitemethod public. - Improved existing tests and added more tests.
Contributors: @ralphtandetzky
- Updated minimum required Rust compiler version to 1.63.
- Added Design Rationale laying out the design goals and the error handling strategy.
- Adjusted formatting of the code.
Contributors: @ralphtandetzky
- Implemented
Quaternion::powfmethod. - Changed method
Quaternion::lnfor zero arguments to returnNEG_INFINITYindependent of the signs of the input quaternion components.
Contributors: @ralphtandetzky
- Changed orientation of some
UnitQuaternionfunctions to conform to common conventions.
Contributors: @ralphtandetzky
- Implemented
Quaternion::expfmethod.
Contributors: @ralphtandetzky
- Implemented edge cases of
Quaternion::expmethod.
Contributors: @ralphtandetzky
- Fixed inaccuracy in
Quaternion::normfor very large and very small results. (#51) - Added new function
Quaternion::fast_normfor branchless fast (but possibly inaccurate) norm calculation.
Contributors: @ralphtandetzky
- Added new function
UnitQuaternion::from_rotation_matrix3x3.
Contributors: @ralphtandetzky
- Added new function
UnitQuaternion::to_rotation_matrix3x3.
Contributors: @ralphtandetzky
- Added new function
UnitQuaternion::from_two_vectors.
Contributors: @ralphtandetzky
- Fixed failing rustdoc tests for disabled features.
- Improvements in CI.
- Added scripts for running CI tests locally.
Contributors: @ralphtandetzky
- Implemented the function
sqrtforUnitQuaternion. - Fixed warnings in markdown files.
Contributors: @ralphtandetzky
- Implemented the function
sqrtforQuaternion.
Contributors: @ralphtandetzky
- Implemented the functions
expandln.
Contributors: @ralphtandetzky
- Added feature
serde. ImplementedSerializeandDeserializetraits for all data structures.
Contributors: @ralphtandetzky
- Added a Code of Conduct.
- Added Contribution information.
- Added a Security Policy
- Added scripts for better security checks on GitHub.
- Added pull request template.
- Updated crate's keywords and categories.
- Minor updates in documentation and scripts.
Contributors: @ralphtandetzky
- Added arithmetic operators which take references as arguments.
Contributors: @ralphtandetzky
- Added a lot of top level documentation.
Contributors: @ralphtandetzky
- Added dot product.
- Added spherical linear interpolation.
Contributors: @ralphtandetzky
- Added the function
UnitQuaternion::to_rotation_vector. - Added new unstable function
from_euler_angles_struct. (It is marked as unstable since the naming may change in the future.)
Contributors: @ralphtandetzky
- Added the function
UnitQuaternion::to_euler_angles. - Added the struct
EulerAngles<T>. - Small improvements in the docs.
Contributors: @ralphtandetzky
- Added the function
UnitQuaternion::rotate_vector.
Contributors: @ralphtandetzky
- Breaking change: Renamed member fields of
Quaternionfroma,b,c, anddtow,x,y, andz. - Added
UnitQuaterniontype with tons of new functionality. - Made a couple of functions
#[inline].
Contributors: @ralphtandetzky
- Fixed issue with Rust Doc.
Contributors: @ralphtandetzky
- Improved documentation including math formulas.
- Added operators for real-values left hand operands.
Contributors: @ralphtandetzky
- Initial release.
Contributors: @ralphtandetzky