I would like to be able to dynamically change the rotation pivot point location of a 3D graphics (in Mathematica terminology
In 3D CAD software, this is typically done by mouse dragging a locator that represents the pivot point.
Each software works in a different way, but here follows a very common behaviour description:
the locator is displaced by mouse dragging
the locator has a snapping capability (like a magnet) when it approaches key points of interest (lines: endpoints, midpoint; circles: centres and quadrants; etc). Some softwares allow for the choice of what is considered a point of interest, and the distance of detection. It is typical for the locator to gain a different representation/colour, when getting attracted to a snapping point
- some softwares detect positions over surfaces, others only detect positions over feature lines and curves (the choice is probably related to the rendering engine vs performance limitations)
- when the locator is dropped at a position where its screen projection depth is undetermined, it keeps the same depth position as the one from its previous location.
- the locator only appears in the scene when the mouse is over the scene. If there's no mouse activity for a couple of seconds, the locator also gets hidden.
Here's an example (Bentley View):
This GREAT post can serve as a good starting point: How can locators be added to the points on a 3D grid?
The best would be to have this available in a Graphics Assistant toolbar, that would also allow for the direct enter of the current viewing vector, angle, etc (or simple select copy of values). But until then, I'm imagining some wrapping (pivot[Graphics3D[ ... ]]), or option addition solution.
(I'm asking for help without posting my trials, since I'm not very expert on working with the internals of Graphics3D "objects", and I imagine that the way this will work is by making heavy use of patterns applied to the Graphics3D "object")