Stellarium 0.13.0
Classes | Functions
StelSphereGeometry.hpp File Reference

Define all SphericalGeometry primitives as well as the SphericalRegionP type. More...

#include "config.h"
#include "OctahedronPolygon.hpp"
#include "StelVertexArray.hpp"
#include "VecMath.hpp"
#include <QVector>
#include <QVariant>
#include <QDebug>
#include <QSharedPointer>
#include <QVarLengthArray>
#include <QDataStream>
#include <stdio.h>

Go to the source code of this file.

Classes

class  SphericalRegionP
 A shared pointer on a SphericalRegion. More...
 
class  SphericalRegion
 Abstract class defining a region of the sphere. More...
 
class  SphericalCap
 A SphericalCap is defined by a direction and an aperture. More...
 
class  SphericalPoint
 Special SphericalRegion for a point on the sphere. More...
 
class  AllSkySphericalRegion
 Special SphericalRegion for the whole sphere. More...
 
class  EmptySphericalRegion
 Special SphericalRegion for — UMM, WHAT EXACTLY? More...
 
class  SphericalPolygon
 Class defining default implementations for some spherical geometry methods. More...
 
class  SphericalConvexPolygon
 A special case of SphericalPolygon for which the polygon is convex. More...
 
class  SphericalTexturedPolygon
 An extension of SphericalPolygon with addition of texture coordinates. More...
 
struct  SphericalTexturedPolygon::TextureVertex
 A container for 3D vertex + associated texture coordinates. More...
 
class  SphericalTexturedConvexPolygon
 Extension of SphericalConvexPolygon for textured polygon. More...
 

Functions

 Q_DECLARE_METATYPE (SphericalRegionP)
 
QDataStream & operator<< (QDataStream &out, const SphericalRegionP &region)
 Serialize the passed SphericalRegionP into a binary blob. More...
 
QDataStream & operator>> (QDataStream &in, SphericalRegionP &region)
 Load the SphericalRegionP from a binary blob. More...
 
bool sideHalfSpaceContains (const Vec3d &v1, const Vec3d &v2, const Vec3d &p)
 Return whether the halfspace defined by the vectors v1^v2 and with aperture 90 deg contains the point p. More...
 
bool sideHalfSpaceContains (const Vec3d &v1, const Vec3d &v2, const SphericalCap &h)
 Return whether the halfspace defined by the vectors v1 and v2 contains the SphericalCap h. More...
 
bool sideHalfSpaceIntersects (const Vec3d &v1, const Vec3d &v2, const SphericalCap &h)
 Return whether the halfspace defined by the vectors v1 and v2 intersects the SphericalCap h. More...
 
 Q_DECLARE_TYPEINFO (SphericalTexturedPolygon::TextureVertex, Q_PRIMITIVE_TYPE)
 
Vec3d greatCircleIntersection (const Vec3d &p1, const Vec3d &p2, const Vec3d &p3, const Vec3d &p4, bool &ok)
 Compute the intersection of 2 great circles segments. More...
 
Vec3d greatCircleIntersection (const Vec3d &p1, const Vec3d &p2, const Vec3d &nHalfSpace, bool &ok)
 Compute the intersection of a great circles segment with another great circle. More...
 

Detailed Description

Define all SphericalGeometry primitives as well as the SphericalRegionP type.

Function Documentation

Vec3d greatCircleIntersection ( const Vec3d p1,
const Vec3d p2,
const Vec3d p3,
const Vec3d p4,
bool &  ok 
)

Compute the intersection of 2 great circles segments.

Parameters
okis set to false if no intersection was found.
Returns
the intersection point on the sphere (normalized) if ok is true, or undefined of ok is false.
Vec3d greatCircleIntersection ( const Vec3d p1,
const Vec3d p2,
const Vec3d nHalfSpace,
bool &  ok 
)

Compute the intersection of a great circles segment with another great circle.

Parameters
okis set to false if no intersection was found.
Returns
the intersection point on the sphere (normalized) if ok is true, or undefined of ok is false.
QDataStream& operator<< ( QDataStream &  out,
const SphericalRegionP region 
)

Serialize the passed SphericalRegionP into a binary blob.

QDataStream& operator>> ( QDataStream &  in,
SphericalRegionP region 
)

Load the SphericalRegionP from a binary blob.

bool sideHalfSpaceContains ( const Vec3d v1,
const Vec3d v2,
const Vec3d p 
)
inline

Return whether the halfspace defined by the vectors v1^v2 and with aperture 90 deg contains the point p.

The comparison is made with a double number slightly smaller than zero to avoid floating point precision errors problems (one test fails if it is set to zero).

bool sideHalfSpaceContains ( const Vec3d v1,
const Vec3d v2,
const SphericalCap h 
)
inline

Return whether the halfspace defined by the vectors v1 and v2 contains the SphericalCap h.

bool sideHalfSpaceIntersects ( const Vec3d v1,
const Vec3d v2,
const SphericalCap h 
)
inline

Return whether the halfspace defined by the vectors v1 and v2 intersects the SphericalCap h.