From 72a8c4f51946e2934c21b855b6a14a42ee8ce45d Mon Sep 17 00:00:00 2001 From: Johannes Terblanche Date: Fri, 9 Nov 2018 16:06:48 +0200 Subject: [PATCH] Fixes Warnings: Constructors no longer fall back to `convert`. A constructor `...` should be defined instead. --- src/TransformUtils.jl | 16 ++++++++++++++++ test/runtests.jl | 22 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/TransformUtils.jl b/src/TransformUtils.jl index 425cb5f..0d7ef20 100644 --- a/src/TransformUtils.jl +++ b/src/TransformUtils.jl @@ -141,6 +141,22 @@ mutable struct Euler Euler(v::VectorFloatInt, q::Quaternion) = new(v[1],v[2],v[3], q) end +#explicit convertion constructors +SO3(ss::so3) = convert(SO3, ss) +SO3(A::AngleAxis) = convert(SO3, A) +SO3(q::Quaternion) = convert(SO3, q) +SO3(E::Euler) = convert(SO3, E) + +Quaternion(ss::so3) = convert(Quaternion, ss) +Quaternion(R::SO3) = convert(Quaternion, R) +Quaternion(A::AngleAxis) = convert(Quaternion, A) +Quaternion(E::Euler) = convert(Quaternion, E) + +AngleAxis(R::SO3) = convert(AngleAxis, R) +AngleAxis(q::Quaternion) = convert(AngleAxis, q) + +Euler(SO3::SO3) = convert(Euler, SO3) +Euler(q::Quaternion) = convert(Euler, q) mutable struct SE3 R::SO3 diff --git a/test/runtests.jl b/test/runtests.jl index 074f3e5..454daf4 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -11,6 +11,28 @@ using Test SE3(T.t, q) SE3(T.t, R) SE3(T.t, A) + E = Euler(0) + + RfromE = SO3(E) + RfromQ = SO3(q) + RfromA = SO3(A) + Rfromss = SO3(ss) + + QfromE = Quaternion(E) + QfromR = Quaternion(R) + QfromA = Quaternion(A) + Qfromss = Quaternion(ss) + + # AfromE = AngleAxis(E) # Convert not implemented yet + AfromR = AngleAxis(R) + AfromQ = AngleAxis(q) + # Afromss = AngleAxis(ss) # Convert not implemented yet + + EfromR = Euler(R) + EfromQ = Euler(q) + # EfromA = Euler(A) # Convert not implemented yet + # Efromss = Euler(ss) # Convert not implemented yet + end @testset "Ensure basic quaternion operations hold" begin