![]() |
Home · All Namespaces · All Classes · Functions · Coding Style · Scripting · Plugins · File Structure |
Public Member Functions | |
StelProjectorPerspective (const Mat4d &modelViewMat) | |
virtual QString | getNameI18 () const |
virtual QString | getDescriptionI18 () const |
virtual float | getMaxFov () const |
bool | forward (Vec3f &v) 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 &, const Vec3d &) const |
virtual bool | intersectViewportDiscontinuityInternal (const Vec3d &, double) const |
bool StelProjectorPerspective::forward | ( | Vec3f & | v | ) | const [inline, 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 StelProjectorPerspective::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.