@sethaxen and I have been working on maintaining the Quaternion.jl this year.
Today, version v0.7.0 has been released with some breaking changes, and this will likely be the last release before v1.0.0.
The changes we worked on include:
-
Octonionhas been removed.- Octonions.jl now provides this type.
-
DualQuaternionhas been removed.-
Quaternion{ForwardDiff.Dual}can take its place.
-
- The field
norm::Boolhas been removed fromQuaternionstruct.- This field was used as a flag to indicate whether the quaternions were normalized or not, but it was inefficient.
- See Makie.jl/quaternions.jl at f2970dcd77bc16f311f8bb3226ef7d716395b369 · MakieOrg/Makie.jl · GitHub.
-
Complex-Quaternioncompatibility has been removed.- This is because we cannot choose one natural mapping \mathbb{C} \to \mathbb{H}.
- The previous implementation for the compatibility was incomplete, and we choose to remove them.
- Add more tests
- Coverage 43% → 99%
- Coverage 43% → 99%
- Add documentation page with Documenter.jl
- Rotation-related functions have been removed.
- Quaternions.jl used to provide a function that converts a unit quaternion to DCM. This function was inefficient because the return type was
Matrix{Float64}but notStaticMatrix{3,3,Float64}. -
Rotations.jl provides a similar function with
StaticMatrix.
- Quaternions.jl used to provide a function that converts a unit quaternion to DCM. This function was inefficient because the return type was
- The
Base’s analytic functions have been extended to quaternion.
Note that some other packages define their own Quaternion struct.
The Quaternions.jl package does not have dependencies except for standard packages, and is maintained under JuliaGeometry organization. I hope every other package which uses quaternions has a dependency on our Quaternions.jl package.
Here’s the package logo designed with Luxor.jl. ![]()