Hacker News new | ask | show | jobs
by BitMastro 4608 days ago
This is just my personal preference, but I believe the naive implementation is miles ahead of the improved ones.

The improved version needs at least two movements to go to the other side of the world, doesn't follow the rotation if the cursor is too fast and worse than all, performs a gamma rotation for each non-equatorial point of the sphere.

Since we have two degrees of freedom on the screen, I expect to use them to drive the two most used rotations, and maybe have another control for the roll. In addition, we are used to have maps with North pointing up (and sometimes pointing South), so the roll is almost never used.

6 comments

Another nice attribute the naive implementation has is path independence. If I grab part of the globe and release it somewhere else I expect those two coordinates to determine the transform. With the non-naive implementation I can get completely different results depending on how I wiggle my mouse on the way. It's true that this gives me more flexibility, but I don't know... it just doesn't feel right to me. Google Earth does it that way too, and it has always bothered me. If I move more than a few degrees on the map I find myself either wildly gyrating my mouse to try to get back into a recognizable north-up orientation or simply clicking the compass rose to have it set things right automatically.
Thanks for the feedback!

I agree it’s not the most intuitive approach for all situations, particularly when you’re used to a North-South orientation for maps. The rolling is perhaps made more obvious with my use of a graticule. For this reason, I’d be interested in optionally restricting to two degrees of freedom when dragging on the globe, and the third angle could be modified when dragging outside the globe only. So the point being dragged on the globe could still remain under the cursor where possible using this approach.

Interestingly, Google Earth uses the same approach as I do, though perhaps it seems less obvious without a graticule.

I don't like Google Earth's approach too much either, I always have to correct back the roll..

I can understand it when you reach the zoom level of a city, at that point you correlate the data on the map with actual visual memories at the street level, where Up does not correspond to North anymore, but instead is related to Forward. Maybe an exponential transition between the two systems as you zoom in?

Interestingly, on a phone it is also trickier because there is not "grab" equivalent and the y axis also makes the page scroll.

Sorry, I don't want to sound overly critic :)

I'd like to disagree. I prefer the improved version.

One of the great joys of manipulating a globe like this is being able to rotate it into completely novel views: not just upside down but at totally arbitrary angles.

The improved version makes this very simple.

If you only want to view the world in a conventional (or upside down) way then I agree that the naive version is very easy to use,

I haven't tried this on a computer yet, just on the iPhone. So I can't address the above comments. But using touch, I think you have created the most intuitive 3-angle rotation I've used yet. The responsiveness is great, and the path follows my finger as I would expect it to (from a purely physical, action-reaction point of view). The mechanics of roll using a mouse are non-obvious to most people, and to have that interface issue addressed by this touch solution is an accomplishment. Maybe that's the real story here?
Struggled with that too. Decided to lock rotation to λ,φ only and rotate with alt key, since it's pretty uncommon.

I should consider revisiting my project from earlier this year and implementing the described approach with versors from your example to simulate plate movement.

http://mxfh.github.io/d3canvasglobes/

(right now the mouse mapping behaves quite odd with rotated views)

What might be cool is allowing the globe's roll to be locked but instead of being rigid, allow the user to affect the roll yet bounce back once they release.
The problem is, trackball-style movement is super useful when you get used to it. But is simply awfully unintuitive, and I'd probably never use it somewhere that not something like a professional tool.
Agreed. You could slightly improve the naive implementation by restricting the north-south rotation so you can't go beyond either pole, so north always stays up. It's not just for the Earth either, I'm now working on a 3D object editor and decided on the naive implementation there as well, because when you're sculpting a chair, it's annoying if up doesn't stay up.
Please do, when I used some 3D editors with that behaviour I was going crazy.. Then I had to remember to restrict the rotation using a modifier or a button.

I don't know where I've seen this, but I think dragging an arc drawn outside the object to adjust the roll is the best solution to the problem.

I agree with you.

I sometimes accidentally rotate Google Maps on my phone when zooming, and it annoys the hell out of me. I'm sure there might be a use case for orienting the map so north isn't up (for example, if you want to look at a route to a place with the place at the top of the map), but I haven't needed it yet. It's much more likely that if I'm using two fingers to gesture on a map, it's because I want to just zoom in and out, not rotate it.

As for Google Maps on mobile, some people like to have the map oriented so that "up" is the direction they are facing (i.e. their current direction of travel.) Annoys the hell out of me, too.

On Google Maps, try the single-finger double-tap-and-scroll for zoom without panning and rotation. Kinda nifty.

There are two competing methods of navigation in blender that have to do with this point.

Turntable and Trackball.

fairly intuitive names for the concept, turntable keeps one axis fixed, and lets you rotate on the other two, and trackball behaves, well, like a track ball. Much like this demo.

The turntable is much simpler, but the trackball is much more capable (if a little tricky to use).

If you use it for a bit of time however, you'll find that despite only have two degrees of freedom, you're capable somewhat indirectly controlling the roll of your camera by click and dragging in a circle.

Test it on the globe! Grab a point and move your mouse in a circle, the larger the circle the faster the roll. It's actually pretty intuitive when you get used to it.

Which is why the debate between Turntable and Trackball exists. They both have merit.

I always liked grabbing the white space around the object to just roll. Seems like a nice compromise although probably not too obvious.