libosmscout  1.1.1
Classes | Namespaces | Functions | Variables
Geometry.h File Reference
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <unordered_map>
#include <utility>
#include <vector>
#include <tuple>
#include <osmscout/CoreImportExport.h>
#include <osmscout/system/Assert.h>
#include <osmscout/system/Math.h>
#include <osmscout/system/SystemTypes.h>
#include <osmscout/GeoCoord.h>
#include <osmscout/Point.h>
#include <osmscout/OSMScoutTypes.h>
#include <osmscout/util/GeoBox.h>
#include <osmscout/util/Distance.h>
#include <osmscout/util/Bearing.h>
Include dependency graph for Geometry.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  osmscout::ScanCell
 
struct  osmscout::SegmentGeoBox
 
struct  osmscout::PathIntersection
 
class  osmscout::PolygonMerger
 
struct  osmscout::PolygonMerger::Polygon
 
struct  osmscout::CellDimension
 
class  osmscout::GeoBoxPartitioner
 
struct  std::hash< osmscout::ScanCell >
 

Namespaces

 osmscout
 

Functions

double osmscout::DegToRad (double deg)
 
double osmscout::RadToDeg (double rad)
 
double osmscout::AngleDiff (double a, double b)
 
template<typename N >
void osmscout::GetBoundingBox (const std::vector< N > &nodes, double &minLon, double &maxLon, double &minLat, double &maxLat)
 
template<class InputIt >
void osmscout::GetBoundingBox (const InputIt first, const InputIt last, GeoBox &boundingBox)
 
template<typename N >
void osmscout::GetBoundingBox (const std::vector< N > &nodes, GeoBox &boundingBox)
 
template<typename N >
bool osmscout::LinesIntersect (const N &a1, const N &a2, const N &b1, const N &b2)
 
template<typename N , typename I >
bool osmscout::GetLineIntersection (const N &a1, const N &a2, const N &b1, const N &b2, I &intersection)
 
template<typename N >
bool osmscout::GetLineIntersectionPixel (const N &a1, const N &a2, const N &b1, const N &b2, N &intersection)
 
template<typename N >
double osmscout::DistanceSquare (const N &a, const N &b)
 
template<typename N , typename M >
bool osmscout::IsCoordInArea (const N &point, const std::vector< M > &nodes)
 
template<typename N , typename M >
int osmscout::GetRelationOfPointToArea (const N &point, const std::vector< M > &nodes)
 
template<typename N , typename M >
bool osmscout::IsAreaCompletelyInArea (const std::vector< N > &a, const std::vector< M > &b)
 
template<typename N , typename M >
bool osmscout::IsAreaAtLeastPartlyInArea (const std::vector< N > &a, const std::vector< M > &b, const GeoBox &aBox, const GeoBox &bBox)
 
template<typename N , typename M >
bool osmscout::IsAreaAtLeastPartlyInArea (const std::vector< N > &a, const std::vector< M > &b)
 
template<typename N , typename M >
bool osmscout::IsAreaSubOfArea (const std::vector< N > &a, const std::vector< M > &b)
 
template<typename N , typename M >
bool osmscout::IsAreaSubOfAreaQuorum (const std::vector< N > &a, const std::vector< M > &b)
 
template<typename N , typename M >
bool osmscout::IsAreaSubOfAreaOrSame (const std::vector< N > &a, const std::vector< M > &b)
 
template<typename N >
bool osmscout::AreaIsSimple (std::vector< N > points)
 
template<typename N >
bool osmscout::AreaIsSimple (const std::vector< std::pair< N, N > > &edges, const std::vector< bool > &edgeStartsNewPoly)
 
template<typename N >
bool osmscout::AreaIsCCW (const std::vector< N > &edges)
 
template<typename N >
bool osmscout::AreaIsValid (std::vector< N > &outerPoints, std::vector< std::vector< N > > &innerPoints)
 
void osmscout::Normalize (double x, double y, double &nx, double &ny)
 
double osmscout::Det (double x1, double y1, double x2, double y2)
 
OSMSCOUT_API size_t osmscout::Pow (size_t a, size_t b)
 
template<typename N >
bool osmscout::AreaIsClockwise (const std::vector< N > &edges)
 
template<typename N >
double osmscout::CalculateDistancePointToLineSegment (const N &p, const N &a, const N &b)
 
OSMSCOUT_API double osmscout::CalculateDistancePointToLineSegment (const GeoCoord &p, const GeoCoord &a, const GeoCoord &b, GeoCoord &intersection)
 
OSMSCOUT_API Distance osmscout::GetSphericalDistance (const GeoCoord &a, const GeoCoord &b)
 
OSMSCOUT_API Distance osmscout::GetEllipsoidalDistance (double aLon, double aLat, double bLon, double bLat)
 
OSMSCOUT_API Distance osmscout::GetEllipsoidalDistance (const GeoCoord &a, const GeoCoord &b)
 
OSMSCOUT_API void osmscout::GetEllipsoidalDistance (double lat1, double lon1, const Bearing &bearing, const Distance &distance, double &lat2, double &lon2)
 
OSMSCOUT_API GeoCoord osmscout::GetEllipsoidalDistance (const GeoCoord &position, const Bearing &bearing, const Distance &distance)
 
OSMSCOUT_API Bearing osmscout::GetSphericalBearingInitial (const GeoCoord &a, const GeoCoord &b)
 
OSMSCOUT_API Bearing osmscout::GetSphericalBearingFinal (const GeoCoord &a, const GeoCoord &b)
 
OSMSCOUT_API double osmscout::GetDistanceInLonDegrees (const Distance &d, double latitude=0)
 
OSMSCOUT_API double osmscout::NormalizeRelativeAngle (double angle)
 
void OSMSCOUT_API osmscout::ScanConvertLine (int x1, int y1, int x2, int y2, std::vector< ScanCell > &cells)
 
OSMSCOUT_API double osmscout::DistanceToSegment (double px, double py, double p1x, double p1y, double p2x, double p2y, double &r, double &qx, double &qy)
 
OSMSCOUT_API double osmscout::DistanceToSegment (const GeoCoord &point, const GeoCoord &segmentStart, const GeoCoord &segmentEnd, double &r, GeoCoord &intersection)
 
OSMSCOUT_API double osmscout::DistanceToSegment (const std::vector< Point > &points, const GeoCoord &segmentStart, const GeoCoord &segmentEnd, GeoCoord &location, GeoCoord &intersection)
 
OSMSCOUT_API double osmscout::DistanceToSegment (const GeoBox &boundingBox, const GeoCoord &segmentStart, const GeoCoord &segmentEnd, GeoCoord &location, GeoCoord &intersection)
 
template<typename N >
void osmscout::GetSegmentBoundingBox (const std::vector< N > &path, size_t from, size_t to, GeoBox &boundingBox)
 
template<typename N >
void osmscout::ComputeSegmentBoxes (const std::vector< N > &path, std::vector< SegmentGeoBox > &segmentBoxes, size_t bound, size_t segmentSize=1000)
 
template<typename N >
void osmscout::FindPathIntersections (const std::vector< N > &aPath, const std::vector< N > &bPath, bool aClosed, bool bClosed, std::vector< PathIntersection > &intersections, size_t aStartIndex=0, size_t bStartIndex=0)
 
template<typename N >
bool osmscout::FindIntersection (const std::vector< N > &way, size_t &i, size_t &j)
 

Variables

const size_t osmscout::CELL_DIMENSION_MAX = 25
 
const size_t osmscout::CELL_DIMENSION_COUNT = CELL_DIMENSION_MAX+1
 
OSMSCOUT_API const std::array< CellDimension, CELL_DIMENSION_COUNT > osmscout::cellDimension