Javis.jl icon indicating copy to clipboard operation
Javis.jl copied to clipboard

Use Rotations.jl

Open Tokazama opened this issue 5 years ago • 7 comments
trafficstars

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 avatar Aug 24 '20 15:08 Tokazama

@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?

TheCedarPrince avatar Aug 24 '20 16:08 TheCedarPrince

A lot of geometric types used in Julia (from JuliaGeometry) use it. The JuliaImage ecosystem also uses it.

Tokazama avatar Aug 24 '20 16:08 Tokazama

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 ?

TheCedarPrince avatar Aug 24 '20 16:08 TheCedarPrince

Hey @Tokazama could you give us a bit more of a concrete use case that you had in mind for Rotations.jl? Thanks!

TheCedarPrince avatar Aug 24 '20 18:08 TheCedarPrince

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.

Tokazama avatar Aug 24 '20 19:08 Tokazama

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.

Wikunia avatar Aug 24 '20 19:08 Wikunia

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.

Tokazama avatar Aug 24 '20 19:08 Tokazama