Stellarium
24.3
|
Public Member Functions | |
StelProjectorMercator (ModelViewTranformP func) | |
QString | getNameI18 () const override |
Get a human-readable name for this projection type. | |
QString | getDescriptionI18 () const override |
Get a human-readable short description for this projection type. | |
float | getMaxFov () const override |
Get the maximum FOV aperture in degree. | |
bool | forward (Vec3f &win) const override |
Apply the transformation in the forward direction in place. More... | |
bool | backward (Vec3d &v) const override |
Apply the transformation in the backward projection in place. | |
QByteArray | getForwardTransformShader () const override |
Returns GLSL code that can be used in a shader to implement forward transformation. | |
QByteArray | getBackwardTransformShader () const override |
Returns GLSL code that can be used in a shader to implement backward transformation. | |
Public Member Functions inherited from StelProjector | |
virtual | ~StelProjector () |
Destructor. | |
QString | getHtmlSummary () const |
Get a HTML version of the short description for this projection type. | |
virtual float | deltaZoom (float fov) const |
Return the small zoom increment to use at the given FOV for nice movements. | |
virtual void | setForwardTransformUniforms (QOpenGLShaderProgram &program) const |
Sets the necessary uniforms so that the shader returned by getForwardTransformShader can work. | |
virtual void | setBackwardTransformUniforms (QOpenGLShaderProgram &program) const |
Sets the necessary uniforms so that the shader returned by getBackwardTransformShader can work. | |
bool | intersectViewportDiscontinuity (const Vec3d &p1, const Vec3d &p2) const |
Determine whether a great circle connection p1 and p2 intersects with a projection discontinuity. More... | |
bool | intersectViewportDiscontinuity (const SphericalCap &cap) const |
virtual float | fovToViewScalingFactor (float fov) const |
Convert a Field Of View radius value in radians in ViewScalingFactor (used internally) | |
virtual float | viewScalingFactorToFov (float vsf) const |
Convert a ViewScalingFactor value (used internally) in Field Of View radius in radians. | |
bool | getFlagGravityLabels () const |
Get the current state of the flag which decides whether to arrange labels so that they are aligned with the bottom of a 2d screen, or a 3d dome. | |
const Vec4i & | getViewport () const |
Get the lower left corner of the viewport and the width, height. | |
Vector2< qreal > | getViewportCenter () const |
Get the center of the viewport relative to the lower left corner of the screen. | |
Vector2< qreal > | getViewportCenterOffset () const |
int | getViewportPosX () const |
Get the horizontal viewport offset in pixels. | |
int | getViewportPosY () const |
Get the vertical viewport offset in pixels. | |
int | getViewportWidth () const |
Get the viewport width in pixels. | |
int | getViewportHeight () const |
Get the viewport height in pixels. | |
qreal | getDevicePixelsPerPixel () const |
Get the number of device pixels per "Device Independent Pixels" (value is usually 1, but 2 for mac retina screens). | |
SphericalRegionP | getViewportConvexPolygon (float marginX=0., float marginY=0.) const |
Return a convex polygon on the sphere which includes the viewport in the current frame. More... | |
const SphericalCap & | getBoundingCap () const |
Return a SphericalCap containing the whole viewport. | |
float | getPixelPerRadAtCenter () const |
Get size of a radian in pixels at the center of the viewport disk. | |
float | getFov () const |
Get the current FOV diameter in degrees. | |
bool | needGlFrontFaceCW () const |
Get whether front faces need to be oriented in the clockwise direction. | |
bool | checkInViewport (const Vec3d &pos) const |
Check to see if a 2d position is inside the viewport. More... | |
bool | checkInViewport (const Vec3f &pos) const |
Check to see if a 2d position is inside the viewport. More... | |
Vec3d | viewPortIntersect (const Vec3d &p1, const Vec3d &p2) const |
Return the position where the 2 2D point p1 and p2 cross the viewport edge P1 must be inside the viewport and P2 outside (check with checkInViewport() before calling this method) | |
bool | project (const Vec3d &v, Vec3d &win) const |
Project the vector v from the current frame into the viewport. More... | |
bool | project (const Vec3f &v, Vec3f &win) const |
Project the vector v from the current frame into the viewport. More... | |
bool | project (const Vec3d &v, Vec3f &win) const |
Project the vector v from the current frame into the viewport. More... | |
virtual void | project (int n, const Vec3d *in, Vec3f *out) |
virtual void | project (int n, const Vec3f *in, Vec3f *out) |
bool | projectInPlace (Vec3d &vd) const |
Project the vector v from the current frame into the viewport. More... | |
bool | projectInPlace (Vec3f &v) const |
Project the vector v from the current frame into the viewport. More... | |
bool | projectCheck (const Vec3d &v, Vec3d &win) const |
Project the vector v from the current frame into the viewport. More... | |
bool | projectCheck (const Vec3f &v, Vec3f &win) const |
Project the vector v from the current frame into the viewport. More... | |
bool | unProject (const Vec3d &win, Vec3d &v) const |
Project the vector v from the viewport frame into the current frame. More... | |
bool | unProject (double x, double y, Vec3d &v) const |
bool | projectLineCheck (const Vec3d &v1, Vec3d &win1, const Vec3d &v2, Vec3d &win2) const |
Project the vectors v1 and v2 from the current frame into the viewport. More... | |
QByteArray | getProjectShader () const |
void | setProjectUniforms (QOpenGLShaderProgram &program) const |
QByteArray | getUnProjectShader () const |
void | setUnProjectUniforms (QOpenGLShaderProgram &program) const |
ModelViewTranformP | getModelViewTransform () const |
Get the current model view matrix. | |
Mat4f | getProjectionMatrix () const |
Get the current projection matrix. | |
StelProjectorMaskType | getMaskType (void) const |
Get the current type of the mask if any. | |
bool | isSameProjection (const StelProjector &other) const |
Check whether the projection represented by other is the same as this. More... | |
Protected Member Functions | |
bool | hasDiscontinuity () const override |
Return whether the projection presents discontinuities. Used for optimization. | |
bool | intersectViewportDiscontinuityInternal (const Vec3d &p1, const Vec3d &p2) const override |
Determine whether a great circle connection p1 and p2 intersects with a projection discontinuity. More... | |
bool | intersectViewportDiscontinuityInternal (const Vec3d &capN, double capD) const override |
Determine whether a cap intersects with a projection discontinuity. | |
Protected Member Functions inherited from StelProjector | |
StelProjector (ModelViewTranformP amodelViewTransform) | |
Private constructor. Only StelCore can create instances of StelProjector. | |
virtual void | computeBoundingCap () |
Initialize the bounding cap. | |
Additional Inherited Members | |
Public Types inherited from StelProjector | |
enum | StelProjectorMaskType { MaskNone , MaskDisk } |
Define viewport mask types. More... | |
typedef QSharedPointer< ModelViewTranform > | ModelViewTranformP |
Shared pointer on a ModelViewTranform instance (implement reference counting) | |
Static Public Member Functions inherited from StelProjector | |
static const QString | maskTypeToString (StelProjectorMaskType type) |
Get a string description of a StelProjectorMaskType. | |
static StelProjectorMaskType | stringToMaskType (const QString &s) |
Get a StelProjectorMaskType from a string description. | |
Protected Attributes inherited from StelProjector | |
ModelViewTranformP | modelViewTransform |
float | flipHorz |
float | flipVert |
float | pixelPerRad |
StelProjectorMaskType | maskType |
double | zNear |
double | oneOverZNearMinusZFar |
Vec4i | viewportXywh |
Vector2< qreal > | viewportCenter |
Vector2< qreal > | viewportCenterOffset |
qreal | viewportFovDiameter |
bool | gravityLabels |
float | defaultAngleForGravityText |
SphericalCap | boundingCap |
qreal | devicePixelsPerPixel |
qreal | widthStretch |
|
overridevirtual |
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.
Reimplemented in StelProjectorMiller.
|
inlineoverrideprotectedvirtual |
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).
Reimplemented from StelProjector.