| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
@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 trackball style, arguably it is closer to the azel style in spirit. The proposed new style drags along twice as much 'state': not only the quaternion q for the current orientation (like all the other mouse rotation styles), but also _q0, for the orientation when the mouse button was initially depressed. 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 arcball, it does not have special a provision for it. That is to say, the path-dependence is a feature, not a bug, for the trackball. In summary:
|
Sorry, something went wrong.
|
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. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
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