AnalyticalGraphicsInc/cesium — pull request #1817 by bagnell (2014-06-11 00:52:50+00:00)
Title: Camera-Terrain interaction

For #449, #549, and #1060.

* Default panning now picks the terrain.
* Modified the default camera tilt mouse behavior to tilt about the point clicked.
* Added camera collision detection to the default mouse interaction.
* Added the following methods to `IntersectionTests`: `rayTriangle`, `lineSegmentTriangle`, `raySphere`, and `lineSegmentSphere`.
* Added `Quaternion.rotateVector` for fast application of a quaternion rotation to a vector. This code:
`var result = Quaternion.rotateVector(quatRotation, vector);`
is faster than
```javascript
var rotation = Matrix3.fromQuaternion(quatRotation);
var result = Matrix3.multiplyByVector(rotation, vector);
```
* Fixed camera rotation near the camera's constrained axis.
* Added `Globe.intersect` and `Globe.pick` for finding intersections of a ray or line segment with the globe. `Globe.pick` only performs a ray intersection test with the part of the surface that was rendered.

There are still some performance improvements that I want to make for tilting. It's a little slow in 3D and worse in Columbus view because of the constant projections to 2D.