Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Switch to a 3d rotation trackball implementation with path independence#29244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
@timhoffm: The proposed PR might seem to fix the 'path dependence', but unfortunately, it is only a superficial fix - it has unintended consequences: if you would momentarily released the mouse button during a mouse drag, then the outcome in general will be different - even when the path taken was exactly the same. Moreover:
The proposed modified mouse rotation style is altogether different from the The proposed new style drags along twice as much 'state': not only the quaternion To be honest, I do not quite understand the preoccupation with the 'path-dependence'. It is a natural consequence of the plate-on-a-ball arrangement of the trackball mouse rotation style; and the path-dependence is actually useful there, since it provides a way to conveniently adjust roll (by moving the mouse in circles), which is needed for this style, since, unlike the In summary:
|
scottshambaugh commentedDec 10, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I think we disagree on which properties are features vs bugs, and the remaining objections can be fixed with docs tweaks. But if there's not clear agreement then I'll close this PR and we can wait for user feedback. |
Uh oh!
There was an error while loading.Please reload this page.
PR summary
Different 3D rotation methods were added in#28841, with different tradeoffs to each. In that PR I was adamant that the matplotlib default method should have the property of "path independence", which is valuable since it allows users to "undo" errant rotations by returning their mouse to the original point on the screen.
Since then, I did a deep dive and writeup on different virtual trackball control methods (https://theshamblog.com/virtual-trackballs-a-taxonomy-and-new-method/), and learned that it's possible to implement the "trackball" control method in a way that preserves the path independence property, and IMO is a strict improvement on the original implementation. This PR switches to that implementation, and cleans up a little bit of the docs.
@MischaMegens2 pinging you for review! During the original PR you favored "trackball" as the default method, which I pushed back on because of the lack of path independence. I'm open to switching it over to that now if you'd prefer it!
We might be able to squeeze a change to the default into 3.10 with a quick review, I think it would be harder to switch over in 3.10.1 since it's changing behavior. But to other devs, I don't want this to block a timely 3.10 release.
PR checklist