GEOS
3.8.1
include
geos
algorithm
CGAlgorithmsDD.h
Go to the documentation of this file.
1
/**********************************************************************
2
*
3
* GEOS - Geometry Engine Open Source
4
* http://geos.osgeo.org
5
*
6
* Copyright (C) 2014 Mateusz Loskot <mateusz@loskot.net>
7
*
8
* This is free software; you can redistribute and/or modify it under
9
* the terms of the GNU Lesser General Public Licence as published
10
* by the Free Software Foundation.
11
* See the COPYING file for more information.
12
*
13
**********************************************************************
14
*
15
* Last port: algorithm/CGAlgorithmsDD.java r789 (JTS-1.14)
16
*
17
**********************************************************************/
18
19
#ifndef GEOS_ALGORITHM_CGALGORITHMDD_H
20
#define GEOS_ALGORITHM_CGALGORITHMDD_H
21
#include <geos/export.h>
22
#include <geos/algorithm/ttmath/ttmath.h>
23
25
29
typedef
ttmath::Big<TTMATH_BITS(32), TTMATH_BITS(128)>
DD
;
30
//typedef ttmath::Big<TTMATH_BITS(64), TTMATH_BITS(128)> DD;
31
//typedef ttmath::Big<TTMATH_BITS(32), TTMATH_BITS(256)> DD;
32
//typedef ttmath::Big<TTMATH_BITS(64), TTMATH_BITS(256)> DD;
33
34
// Forward declarations
35
namespace
geos
{
36
namespace
geom {
37
class
Coordinate;
38
class
CoordinateSequence;
39
}
40
}
41
42
namespace
geos
{
43
namespace
algorithm {
// geos::algorithm
44
46
class
GEOS_DLL
CGAlgorithmsDD
{
47
48
public
:
49
50
enum
{
51
CLOCKWISE = -1,
52
COLLINEAR = 0,
53
COUNTERCLOCKWISE = 1
54
};
55
56
enum
{
57
RIGHT = -1,
58
LEFT = 1,
59
STRAIGHT = 0,
60
FAILURE = 2
61
};
62
75
static
int
orientationIndex(
const
geom::Coordinate
& p1,
76
const
geom::Coordinate
& p2,
77
const
geom::Coordinate
& q);
98
static
int
orientationIndexFilter(
const
geom::Coordinate
& pa,
99
const
geom::Coordinate
& pb,
100
const
geom::Coordinate
& pc);
101
102
static
int
103
orientation(
double
x)
104
{
105
if
(x < 0) {
106
return
CGAlgorithmsDD::RIGHT;
107
}
108
if
(x > 0) {
109
return
CGAlgorithmsDD::LEFT;
110
}
111
return
CGAlgorithmsDD::STRAIGHT;
112
}
113
123
static
geom::Coordinate
intersection(
const
geom::Coordinate
& p1,
const
geom::Coordinate
& p2,
124
const
geom::Coordinate
& q1,
const
geom::Coordinate
& q2);
125
126
static
int
signOfDet2x2(
double
dx1,
double
dy1,
double
dx2,
double
dy2);
127
128
static
DD
detDD(
double
x1,
double
y1,
double
x2,
double
y2);
129
static
DD
detDD(
const
DD
& x1,
const
DD
& y1,
const
DD
& x2,
const
DD
& y2);
130
154
static
geom::Coordinate
circumcentreDD(
const
geom::Coordinate
& a,
const
geom::Coordinate
& b,
const
geom::Coordinate
& c);
155
156
protected
:
157
158
static
int
signOfDet2x2(
const
DD
& x1,
const
DD
& y1,
const
DD
& x2,
const
DD
& y2);
159
160
};
161
162
}
// namespace geos::algorithm
163
}
// namespace geos
164
165
#endif // GEOS_ALGORITHM_CGALGORITHM_H
geos
Basic namespace for all GEOS functionalities.
Definition:
IndexedNestedRingTester.h:25
geos::geom::Coordinate
Coordinate is the lightweight class used to store coordinates.
Definition:
Coordinate.h:84
DD
ttmath::Big< TTMATH_BITS(32), TTMATH_BITS(128)> DD
Close to DoubleDouble equivalent used by JTS.
Definition:
CGAlgorithmsDD.h:29
geos::algorithm::CGAlgorithmsDD
Implements basic computational geometry algorithms using extended precision float-point arithmetic.
Definition:
CGAlgorithmsDD.h:46
Generated by
1.8.17