Home · All Namespaces · All Classes · Functions · Coding Style · Scripting · Plugins · File Structure
Public Member Functions | Protected Member Functions

StelProjectorMercator Class Reference

List of all members.

Public Member Functions

 StelProjectorMercator (const Mat4d &modelViewMat)
virtual QString getNameI18 () const
virtual QString getDescriptionI18 () const
virtual float getMaxFov () const
bool forward (Vec3f &win) const
bool backward (Vec3d &v) const
float fovToViewScalingFactor (float fov) const
float viewScalingFactorToFov (float vsf) const
float deltaZoom (float fov) const

Protected Member Functions

virtual bool hasDiscontinuity () const
virtual bool intersectViewportDiscontinuityInternal (const Vec3d &p1, const Vec3d &p2) const
virtual bool intersectViewportDiscontinuityInternal (const Vec3d &capN, double capD) const

Member Function Documentation

bool StelProjectorMercator::forward ( Vec3f v  )  const [virtual]

Apply the transformation in the forward direction in place.

After transformation v[2] will always contain the length of the original v: sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]) regardless of the projection type. This makes it possible to implement depth buffer testing in a way independent of the projection type. I would like to return the squared length instead of the length because of performance reasons. But then far away objects are not textured any more, perhaps because of a depth buffer overflow although the depth test is disabled?

Implements StelProjector.

virtual bool StelProjectorMercator::intersectViewportDiscontinuityInternal ( const Vec3d p1,
const Vec3d p2 
) const [inline, protected, virtual]

Determine whether a great circle connection p1 and p2 intersects with a projection discontinuity.

For many projections without discontinuity, this should return always false, but for other like cylindrical projection it will return true if the line cuts the wrap-around line (i.e. at lon=180 if the observer look at lon=0).

Implements StelProjector.