Stellarium 0.11.4 | |||
Home · All Namespaces · All Classes · Functions · Coding Style · Scripting · Plugins · File Structure |
A SphericalCap is defined by a direction and an aperture. More...
#include <StelSphereGeometry.hpp>
Public Member Functions | |
SphericalCap () | |
Construct a SphericalCap with a 90 deg aperture and an undefined direction. | |
SphericalCap (double x, double y, double z) | |
Construct a SphericalCap from its direction and assumes a 90 deg aperture. | |
SphericalCap (const Vec3d &an, double ar) | |
Construct a SphericalCap from its direction and aperture. | |
SphericalCap (const SphericalCap &other) | |
Copy constructor. | |
virtual SphericalRegionType | getType () const |
virtual OctahedronPolygon | getOctahedronPolygon () const |
Return the octahedron contour representation of the polygon. | |
virtual double | getArea () const |
Get the area of the intersection of the halfspace on the sphere in steradian. | |
virtual bool | isEmpty () const |
Return true if the region is empty. | |
virtual Vec3d | getPointInside () const |
Return a point located inside the SphericalCap. | |
virtual SphericalCap | getBoundingCap () const |
Return itself. | |
virtual bool | contains (const Vec3d &v) const |
virtual bool | contains (const Vec3f &v) const |
virtual bool | contains (const SphericalConvexPolygon &r) const |
virtual bool | contains (const SphericalCap &h) const |
virtual bool | contains (const AllSkySphericalRegion &) const |
virtual bool | intersects (const SphericalPolygon &r) const |
virtual bool | intersects (const SphericalConvexPolygon &r) const |
virtual bool | intersects (const SphericalCap &h) const |
Returns whether a SphericalCap intersects with this one. | |
virtual bool | intersects (const AllSkySphericalRegion &) const |
virtual QVariantList | toQVariant () const |
Serialize the region into a QVariant map matching the JSON format. | |
virtual void | serialize (QDataStream &out) const |
Serialize the region. This method must allow as fast as possible serialization and work with deserialize(). | |
double | getRadius () const |
Return the radiusof the cap in radian. | |
bool | intersectsHalfSpace (double hn0, double hn1, double hn2) const |
Returns whether a HalfSpace (like a SphericalCap with d=0) intersects with this SphericalCap. | |
bool | clipGreatCircle (Vec3d &v1, Vec3d &v2) const |
Clip the passed great circle connecting points v1 and v2. | |
bool | operator== (const SphericalCap &other) const |
Comparison operator. | |
QVector< Vec3d > | getClosedOutlineContour () const |
Return the list of closed contours defining the polygon boundaries. | |
bool | intersectsConvexContour (const Vec3d *vertice, int nbVertice) const |
Return whether the cap intersect with a convex contour defined by nbVertice. | |
bool | containsTriangle (const Vec3d *vertice) const |
Return whether the cap contains the passed triangle. | |
bool | intersectsTriangle (const Vec3d *vertice) const |
Return whether the cap intersect with the passed triangle. | |
Static Public Member Functions | |
static SphericalRegionP | deserialize (QDataStream &in) |
Deserialize the region. This method must allow as fast as possible deserialization. | |
static double | relativeAreaOverlap (const SphericalCap &c1, const SphericalCap &c2) |
Return the relative overlap between the areas of the 2 caps, i.e: min(intersectionArea/c1.area, intersectionArea/c2.area). | |
static double | relativeDiameterOverlap (const SphericalCap &c1, const SphericalCap &c2) |
Return the relative overlap between the diameter of the 2 caps, i.e: min(intersectionDistance/c1.diameter, intersectionDistance/c2.diameter). | |
static bool | intersectionPoints (const SphericalCap &h1, const SphericalCap &h2, Vec3d &p1, Vec3d &p2) |
Compute the intersection of 2 halfspaces on the sphere (usually on 2 points) and return it in p1 and p2. | |
Public Attributes | |
Vec3d | n |
The direction unit vector. Only if d==0, this vector doesn't need to be unit. | |
double | d |
The cos of cone radius. |
A SphericalCap is defined by a direction and an aperture.
It forms a cone from the center of the Coordinate frame with a radius d. It is a disc on the sphere, a region above a circle on the unit sphere.
SphericalCap::SphericalCap | ( | ) | [inline] |
Construct a SphericalCap with a 90 deg aperture and an undefined direction.
SphericalCap::SphericalCap | ( | double | x, | |
double | y, | |||
double | z | |||
) | [inline] |
Construct a SphericalCap from its direction and assumes a 90 deg aperture.
SphericalCap::SphericalCap | ( | const Vec3d & | an, | |
double | ar | |||
) | [inline] |
Construct a SphericalCap from its direction and aperture.
an | a unit vector indicating the direction. | |
ar | cosinus of the aperture. |
SphericalCap::SphericalCap | ( | const SphericalCap & | other | ) | [inline] |
Copy constructor.
Clip the passed great circle connecting points v1 and v2.
bool SphericalCap::containsTriangle | ( | const Vec3d * | vertice | ) | const |
Return whether the cap contains the passed triangle.
static SphericalRegionP SphericalCap::deserialize | ( | QDataStream & | in | ) | [static] |
Deserialize the region. This method must allow as fast as possible deserialization.
virtual double SphericalCap::getArea | ( | ) | const [inline, virtual] |
Get the area of the intersection of the halfspace on the sphere in steradian.
Reimplemented from SphericalRegion.
virtual SphericalCap SphericalCap::getBoundingCap | ( | ) | const [inline, virtual] |
Return itself.
Reimplemented from SphericalRegion.
QVector<Vec3d> SphericalCap::getClosedOutlineContour | ( | ) | const |
Return the list of closed contours defining the polygon boundaries.
virtual OctahedronPolygon SphericalCap::getOctahedronPolygon | ( | ) | const [virtual] |
Return the octahedron contour representation of the polygon.
It can be used for safe computation of intersection/union in the general case.
Implements SphericalRegion.
virtual Vec3d SphericalCap::getPointInside | ( | ) | const [inline, virtual] |
Return a point located inside the SphericalCap.
Reimplemented from SphericalRegion.
double SphericalCap::getRadius | ( | ) | const [inline] |
Return the radiusof the cap in radian.
static bool SphericalCap::intersectionPoints | ( | const SphericalCap & | h1, | |
const SphericalCap & | h2, | |||
Vec3d & | p1, | |||
Vec3d & | p2 | |||
) | [static] |
Compute the intersection of 2 halfspaces on the sphere (usually on 2 points) and return it in p1 and p2.
If the 2 SphericalCap don't intersect or intersect only at 1 point, false is returned and p1 and p2 are undefined.
virtual bool SphericalCap::intersects | ( | const SphericalCap & | h | ) | const [inline, virtual] |
Returns whether a SphericalCap intersects with this one.
I managed to make it without sqrt or acos, so it is very fast!
Reimplemented from SphericalRegion.
bool SphericalCap::intersectsConvexContour | ( | const Vec3d * | vertice, | |
int | nbVertice | |||
) | const |
Return whether the cap intersect with a convex contour defined by nbVertice.
bool SphericalCap::intersectsHalfSpace | ( | double | hn0, | |
double | hn1, | |||
double | hn2 | |||
) | const [inline] |
Returns whether a HalfSpace (like a SphericalCap with d=0) intersects with this SphericalCap.
hn0 | the x direction of the halfspace. | |
hn1 | the y direction of the halfspace. | |
hn2 | the z direction of the halfspace. |
bool SphericalCap::intersectsTriangle | ( | const Vec3d * | vertice | ) | const |
Return whether the cap intersect with the passed triangle.
virtual bool SphericalCap::isEmpty | ( | ) | const [inline, virtual] |
Return true if the region is empty.
Reimplemented from SphericalRegion.
bool SphericalCap::operator== | ( | const SphericalCap & | other | ) | const [inline] |
Comparison operator.
static double SphericalCap::relativeAreaOverlap | ( | const SphericalCap & | c1, | |
const SphericalCap & | c2 | |||
) | [static] |
Return the relative overlap between the areas of the 2 caps, i.e: min(intersectionArea/c1.area, intersectionArea/c2.area).
static double SphericalCap::relativeDiameterOverlap | ( | const SphericalCap & | c1, | |
const SphericalCap & | c2 | |||
) | [static] |
Return the relative overlap between the diameter of the 2 caps, i.e: min(intersectionDistance/c1.diameter, intersectionDistance/c2.diameter).
virtual void SphericalCap::serialize | ( | QDataStream & | out | ) | const [inline, virtual] |
Serialize the region. This method must allow as fast as possible serialization and work with deserialize().
Implements SphericalRegion.
virtual QVariantList SphericalCap::toQVariant | ( | ) | const [virtual] |
Serialize the region into a QVariant map matching the JSON format.
The format is ["CAP", [ra, dec], radius], with ra dec in degree in ICRS frame and radius in degree (between 0 and 180 deg)
Implements SphericalRegion.
double SphericalCap::d |
The cos of cone radius.
The direction unit vector. Only if d==0, this vector doesn't need to be unit.