Skip to content

Commit 561fde6

Browse files
authored
recenter: accept origin::Tuple (#74)
1 parent 9fadc33 commit 561fde6

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

src/affine.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Base.show(io::IO, trans::LinearMap) = print(io, "LinearMap($(trans.linear))") #
4949
function (trans::LinearMap{M})(x) where {M}
5050
trans.linear * x
5151
end
52+
(trans::LinearMap{M})(x::Tuple) where {M} = trans(SVector(x))
5253

5354
Base.inv(trans::LinearMap) = LinearMap(inv(trans.linear))
5455

@@ -204,7 +205,7 @@ function Base.:(==)(t1::LinearMap, t2::AffineMap)
204205
0 == vecnorm(t2.translation)
205206
end
206207

207-
recenter(trans::AbstractMatrix, origin::AbstractVector) = recenter(LinearMap(trans), origin)
208+
recenter(trans::AbstractMatrix, origin::Union{AbstractVector, Tuple}) = recenter(LinearMap(trans), origin)
208209

209210
transform_deriv(trans::AffineMap, x) = trans.linear
210211
# TODO transform_deriv_params

src/core.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Base.inv(trans::ComposedTransformation) = inv(trans.t2) ∘ inv(trans.t1)
7979
Base.inv(trans::IdentityTransformation) = trans
8080

8181
"""
82-
recenter(trans::Union{AbstractMatrix,Transformation}, origin::AbstractVector) -> ctrans
82+
recenter(trans::Union{AbstractMatrix,Transformation}, origin::Union{AbstractVector, Tuple}) -> ctrans
8383
8484
Return a new transformation `ctrans` such that point `origin` serves
8585
as the origin-of-coordinates for `trans`. Translation by `±origin`
@@ -97,6 +97,7 @@ space around `origin`.
9797
function recenter(trans::Transformation, origin::AbstractVector)
9898
Translation(origin) trans Translation(-origin)
9999
end
100+
recenter(trans::Transformation, origin::Tuple) = recenter(trans, SVector(origin))
100101

101102

102103
"""

test/affine.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,13 @@ end
107107
@test c(origin) == origin
108108
@test c(zero(origin)) == [6,-6]
109109
end
110+
111+
# Tuple is converted to SVector first
112+
origin = (5, -3)
113+
new_origin = SVector(origin)
114+
c = recenter(M, origin)
115+
@test c(origin) == new_origin
116+
@test c(zero(new_origin)) == [6, -6]
110117
end
111118

112119
@testset "application of AffineMap in terms of LinearMap and Translation" begin

0 commit comments

Comments
 (0)