GeoTessCPP
2.6.1
Software to facilitate storage and retrieval of 3D information about the Earth.
|
Extends Polygon by including information and constraints about the radial dimension. More...
#include <GeoTessPolygon3D.h>
Public Member Functions | |
~GeoTessPolygon3D () | |
GeoTessPolygon3D () | |
GeoTessPolygon3D (vector< double * > points, GeoTessHorizon *h_bottom, GeoTessHorizon *h_top) | |
GeoTessPolygon3D (double *center, double radius, int nEdges, GeoTessHorizon *h_bottom, GeoTessHorizon *h_top) | |
GeoTessPolygon3D (string filename) | |
virtual string | class_name () |
GeoTessHorizon * | getTop () |
GeoTessHorizon * | getBottom () |
bool | contains (const double *x, const double &radius, const int &layer, GeoTessProfile **profiles) |
bool | contains (const double *x, const int &layer) |
bool | contains (GeoTessPosition &position) |
bool | containsAll (vector< double * > &points, vector< double > &radii, vector< int > &layers, vector< GeoTessProfile ** > &profiles) |
bool | containsAny (vector< double * > &points, vector< double > &radii, vector< int > &layers, vector< GeoTessProfile ** > &profiles) |
virtual void | write (const string &outputFileName) |
![]() | |
virtual | ~GeoTessPolygon () |
GeoTessPolygon () | |
GeoTessPolygon (vector< double * > &points) | |
GeoTessPolygon (const double *center, double radius, int nEdges) | |
GeoTessPolygon (string filename) | |
void | addReference () |
void | removeReference () |
bool | isNotReferenced () |
int | getRefCount () |
int | size () |
const double *const | getReferencePoint () |
const void | getReferencePoint (double *u) |
bool | getReferencePointIn () |
void | invert () |
void | setReferencePoint (const double *refPoint, const bool &inside) |
void | setReferencePoint (double lat, double lon, bool inside) |
bool | containsAny (const vector< double * > &points) |
bool | containsAll (const vector< double * > &positions) |
bool | contains (const double *x) |
bool | onBoundary (GeoTessGreatCircle &gcRef) |
bool | onBoundary (const double *x) |
void | getPoints (vector< double * > &points, const bool &repeatFirstPoint) |
void | getPoints (vector< double * > &points, const bool &repeatFirstPoint, const double &maxSpacing) |
const double * | getPoint (int index) |
double | getArea () |
double | getAreaSmall () |
double | getAreaLarge () |
string | str (const bool &repeatFirstPoint, const bool &latFirst, const double &minLongitude=-180) |
Additional Inherited Members | |
![]() | |
static double | getTolerance () |
![]() | |
void * | attachment |
![]() | |
void | setup (vector< double * > &points) |
int | edgeCrossings (GeoTessGreatCircle &gcRef) |
![]() | |
vector< GeoTessGreatCircle * > | edges |
double * | referencePoint |
bool | referenceIn |
bool | global |
bool | lonFirst |
int | refCount |
![]() | |
static double | TOLERANCE |
Extends Polygon by including information and constraints about the radial dimension.
An ordered list of points on the surface of a unit sphere that define a closed polygon. Polygons have the ability to test whether or not an arbitrary test point on the sphere is inside or outside the polygon.
Besides the set of points that define the boundary of the polgon, a Polygon object has a single private instance of a reference point which is known to be either 'inside' or 'outside' the polygon. By default, the reference point is computed from the supplied boundary points in the following manner:
This method will work fine provided that polygons are 'smaller' than approximately a hemisphere. It is possible to override this behavior. The first method is to call the invert() method which simply reverses the value of whether the reference point is 'inside' or 'outside' the polygon. There are also methods that allow applications to specify both the position of the reference point and whether it is 'inside' or 'outside' the polygon.
A test point that is located very close to a polygon boundary point is deemed to be 'inside' the polygon. This means that if two adjacent, non-overlapping polygons share a boundary point, a test point near that boundary point will be deemed to be 'inside' both polygons. In this context two points are 'very close' if they are separated by less than 1e-7 radians or 5.7e-6 degrees. For a sphere with the radius of the Earth (6371 km), this corresponds to a linear distance of about 60 cm.
Polygon implements reference counting. This means that when some other object obtains a reference to a Polygon object, it should increment the polygon's reference count. When it is done with the polygon it should decrement the polygon's reference count and delete the polygon if the reference count is equal to zero.
Definition at line 114 of file GeoTessPolygon3D.h.
geotess::GeoTessPolygon3D::~GeoTessPolygon3D | ( | ) |
|
inline |
Definition at line 126 of file GeoTessPolygon3D.h.
|
inline |
Constructor that accepts a list of unit vectors that define the polygon. The polygon will be closed, i.e., if the first point and last point are not coincident then an edge will be created between them.
points | array of unit vectors specifying the positions that define the polygon. |
h_bottom | Horizon object that defines the bottom of the Polygon3D. |
h_top | Horizon object that defines the top of the Polygon3D. |
Definition at line 139 of file GeoTessPolygon3D.h.
|
inline |
Constructor that builds a circular polygon of a specified horizontal radius centered on position center.
center | unit vector of the position that defines the center of the circular Polygon. |
radius | angular radius of the polygon, in radians. |
nEdges | number of edges that define the polygon |
h_bottom | Horizon object that defines the bottom of the Polygon3D. |
h_top | Horizon object that defines the top of the Polygon3D. |
Definition at line 154 of file GeoTessPolygon3D.h.
geotess::GeoTessPolygon3D::GeoTessPolygon3D | ( | string | filename | ) |
Constructor that reads a Polygon from a file.
filename | the name of the file containing the polygon information. |
throws a GeoTessException if specified file is a kml or kmz file. GeoTessExplorer can translate kml/kmz files to a compatible ascii format.
|
inlinevirtual |
Returns the class name.
Reimplemented from geotess::GeoTessPolygon.
Definition at line 171 of file GeoTessPolygon3D.h.
|
inline |
Returns true if this Polygon3D contains the specified position.
x | the unit vector of the position |
radius | the radius of the position in km |
layer | the index of the layer in which the position resides |
profiles | a 1D array of profiles at the specified position. The number of elements must be equal to the number of layers in the model with the first layer being the deepest (closest to the center of the Earth) and the last layer being the shallowest (farthest from the center of the Earth). |
Definition at line 202 of file GeoTessPolygon3D.h.
|
inline |
Returns true if this Polygon3D contains the specified position.
x | the unit vector of the position |
layer | the index of the layer in which the position resides |
Definition at line 218 of file GeoTessPolygon3D.h.
bool geotess::GeoTessPolygon3D::contains | ( | GeoTessPosition & | position | ) |
Returns true if this Polygon3D contains the specified position.
position |
|
inline |
Returns true if this Polygon contains all of the supplied unit vectors
points | unit vectors of positions to be evaluated |
radii | the radii of the positions to be evaluated. radii.size() and points.size() must be equal. |
layers | the indexes of the layers in which the positions reside. |
profiles | the array of Profiles at the current geographic position. profiles.size() must equal number of layers in the model. |
Definition at line 244 of file GeoTessPolygon3D.h.
|
inline |
Returns true if this Polygon contains any of the supplied unit vectors
points | unit vectors of positions to be evaluated |
radii | the radii of the positions to be evaluated. radii.size() and points.size() must be equal. |
layers | the indexes of the layers in which the positions reside. |
profiles | the array of Profiles at the current geographic position. profiles.size() must equal number of layers in the model. |
Definition at line 263 of file GeoTessPolygon3D.h.
|
inline |
Retrieve a reference to the Horizon that defines the bottom of the active region.
Definition at line 184 of file GeoTessPolygon3D.h.
|
inline |
Retrieve a reference to the Horizon that defines the top of the active region.
Definition at line 176 of file GeoTessPolygon3D.h.
|
virtual |
Reimplemented from geotess::GeoTessPolygon.