Javis.jl
Javis.jl copied to clipboard
Use Rotations.jl
I think it would be nice if Javis.jl used Rotations.jl. It's been thoroughly tested and would allow Javis.jl to play nice with other pipelines that are already using it.
@Tokazama thanks for opening the issue! I like this idea. When you say Rotations.jl would allow Javis.jl to play nice with other pipelines that are using it, what sort of pipelines and other packages are you thinking of?
A lot of geometric types used in Julia (from JuliaGeometry) use it. The JuliaImage ecosystem also uses it.
Great points here. I think it may take a bit of time to implement something like this as it may require a re-write in areas of our back-end. Thoughts @Wikunia ?
Hey @Tokazama could you give us a bit more of a concrete use case that you had in mind for Rotations.jl? Thanks!
In the first tutorial you use rotation for a point. Using Rotations.jl would allow us to visualize this sort of thing when applied in a typical pipeline like rotating an image/mesh/etc without having to reinvent the entire process of rotating whatever type we use.
Admittedly, this assumes that the resulting type is compatible with Jarvis, but this is why I mentioned use something like GeometryBasics.jl on Zulip. I figured that was a separate issue entirely though, because you may already have something in mind to manage this sort of thing.
Hi @Tokazama thanks for opening this discussion. I haven't used this before so after checking the package for a bit (only the readme). I was wondering whether it's confusing to use for others who are not used to the package for something that is a simple 2D and not 3D rotation as 3D seems to be clearly the focus of the package.
I'll have a deeper look into it in the next days.
At the moment we basically just define two angles and then interpolate and for the frame and call the Luxor.jl rotate function. As everything is happening in 2D it seems to be quite basic and easy to use (subjective of course :smile: )
This basically doesn't rotate the point itself but the canvas around it such that every object like a polygon or later an image or something can be rotated this way.
This is just to clarify the current state if that was unclear.
I was wondering whether it's confusing to use for others who are not used to the package for something that is a simple 2D and not 3D rotation as 3D seems to be clearly the focus of the package.
I haven't found it confusing but that may not be representative of what everyone else's experience is.
As everything is happening in 2D it seems to be quite basic and easy to use
TBH. I haven't thought too much about using straight 2D rotations. I typically use it with CoordinateTransformations.jl to rotate and move and transform projections. It's just nice to have the same approach for chaining these transformations together, especially when moving from 2D->3D happens a lot and I'm coregistering things into a common space.
A more clear example of what I'm thinking of is taking a 3D brain image and 3D mesh. I want to visualize the 3D mesh as a 2D projection and have a slice of the 3D brain next to it. Depending on what type of processing I'm doing I might even want to overlay the 2D projection onto the brain slice. Because it's a time series I'm continually performing transformations into 2D space. I could weave in calls to Javis after I do each transformation but at that point I'm not really using Javis for animations. I'd be using it to call Luxor.jl.
It would certainly be nice to visualize processing happening in 3 dimensions as a more interpretable 2 dimension image but this isn't really a simple animation so I understand if it's beyond the scope of Javis and you'd rather stick with the current 2D rotations you have.