@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:
-
Octonion
has been removed.- Octonions.jl now provides this type.
-
DualQuaternion
has been removed.-
Quaternion{ForwardDiff.Dual}
can take its place.
-
- The field
norm::Bool
has been removed fromQuaternion
struct.- 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
-Quaternion
compatibility 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%
- 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.