I found two packages of interest Rotations.jl and ReferenceFraneRotations.jl - does anyone happen to know an example where it is used to rotate for example a grid of points 45 degrees? I have found a function to generate a grid like this:
function creategrid(d::Integer, dp::Number)
@assert d >= 1 ("d (number of dimensions) must be a positive integer")
r = range(-1, 1, step = dp)
iter = Iterators.product((r for _ in 1:d)...)
return vec([collect(i) for i in iter])
end
creategrid(2,0.1)
Kind regards
Since you have 2D grids and seemingly simple rotations, it may be more instructive to write the rotation matrix in this case:
rotgrid(grd, θ) = [cos(θ) -sin(θ); sin(θ) cos(θ)] * grd
grd = creategrid(2, 0.05)
rgrd = rotgrid.(grd, π/4)
using GLMakie
scene = scatter(first.(grd), last.(grd), color=:blue, markersize=5, axis=(aspect=DataAspect(), ))
scatter!(first.(rgrd), last.(rgrd), color=:red, markersize=5)
3 Likes
Thanks for this suggestion!
If I would want to do the rotation around a specific point, let us say the bottom right corner, how would I do that?
Kind regards
To rotate around any point P0
:
You can do:
grd = creategrid(2, 0.05)
P0 = [-1,-1] # point of rotation
rgrd = rotgrid.(grd .- Ref(P0), π/4) .+ Ref(P0)
Thank you very much Rafael
Kind regards
1 Like