ATLAS Offline Software
Loading...
Searching...
No Matches
PolygonTriangulator.cxx File Reference
#include "PolygonTriangulator.h"
#include <algorithm>
#include <cmath>
#include <map>
#include <limits>
#include <list>
#include <queue>
#include <set>
#include <iostream>
#include <stack>
#include <cassert>
#include <cstdlib>

Go to the source code of this file.

Classes

class  internal_poltrig::BTreeNode< T, KeyType >
class  internal_poltrig::SplayTree< T, KeyType >
class  internal_poltrig::Pointbase
class  internal_poltrig::Linebase
class  PolygonTriangulator::Polygon

Namespaces

namespace  internal_poltrig

Macros

#define sqr(t)
#define INEXACT   /* Nothing */
#define REAL   double /* float or double */
#define Absolute(a)
#define Fast_Two_Sum_Tail(a, b, x, y)
#define Fast_Two_Sum(a, b, x, y)
#define Two_Sum_Tail(a, b, x, y)
#define Two_Sum(a, b, x, y)
#define Two_Diff_Tail(a, b, x, y)
#define Two_Diff(a, b, x, y)
#define Split(a, ahi, alo)
#define Two_Product_Tail(a, b, x, y)
#define Two_Product(a, b, x, y)
#define Two_One_Diff(a1, a0, b, x2, x1, x0)
#define Two_Two_Diff(a1, a0, b1, b0, x3, x2, x1, x0)

Typedefs

typedef std::map< unsigned int, Pointbase * > internal_poltrig::PointbaseMap
typedef std::map< unsigned int, Linebase * > internal_poltrig::LineMap
typedef std::priority_queue< Pointbaseinternal_poltrig::PQueue
typedef SplayTree< Linebase *, double > internal_poltrig::EdgeBST
typedef std::list< unsigned int > internal_poltrig::Monopoly
typedef std::list< Monopolyinternal_poltrig::Monopolys
typedef std::vector< unsigned int > internal_poltrig::Triangle
typedef std::list< Triangleinternal_poltrig::Triangles
typedef std::map< unsigned int, std::set< unsigned int > > internal_poltrig::AdjEdgeMap

Enumerations

enum  internal_poltrig::Type {
  internal_poltrig::UNKNOWN , internal_poltrig::INPUT , internal_poltrig::INSERT , internal_poltrig::START ,
  internal_poltrig::END , internal_poltrig::MERGE , internal_poltrig::SPLIT , internal_poltrig::REGULAR_UP ,
  internal_poltrig::REGULAR_DOWN
}

Functions

int internal_poltrig::fast_expansion_sum_zeroelim (const int &elen, REAL *e, const int &flen, REAL *f, REAL *h)
REAL internal_poltrig::estimate (const int &elen, REAL *e)
REAL internal_poltrig::orient2dadapt (REAL *pa, REAL *pb, REAL *pc, const REAL &detsum)
REAL internal_poltrig::orient2d (REAL *pa, REAL *pb, REAL *pc)
double internal_poltrig::orient2d (double *pa, double *pb, double *pc)
double internal_poltrig::dist_sqr (const Pointbase &sp, const Pointbase &ep)
double internal_poltrig::dist_sqr (double *pa, double *pb)
void internal_poltrig::UpdateKey (BTreeNode< Linebase *, double > *node, double y)
bool internal_poltrig::operator== (const Pointbase &pa, const Pointbase &pb)
bool internal_poltrig::operator> (const Pointbase &pa, const Pointbase &pb)
bool internal_poltrig::operator< (const Pointbase &pa, const Pointbase &pb)
bool internal_poltrig::operator!= (const Pointbase &pa, const Pointbase &pb)

Macro Definition Documentation

◆ Absolute

#define Absolute ( a)
Value:
((a) >= 0.0 ? (a) : -(a))
static Double_t a

Definition at line 273 of file PolygonTriangulator.cxx.

◆ Fast_Two_Sum

#define Fast_Two_Sum ( a,
b,
x,
y )
Value:
x = (REAL) (a + b); \
Fast_Two_Sum_Tail(a, b, x, y)
#define REAL
#define y
#define x

Definition at line 293 of file PolygonTriangulator.cxx.

293#define Fast_Two_Sum(a, b, x, y) \
294 x = (REAL) (a + b); \
295 Fast_Two_Sum_Tail(a, b, x, y)

◆ Fast_Two_Sum_Tail

#define Fast_Two_Sum_Tail ( a,
b,
x,
y )
Value:
bvirt = x - a; \
y = b - bvirt

Definition at line 289 of file PolygonTriangulator.cxx.

289#define Fast_Two_Sum_Tail(a, b, x, y) \
290 bvirt = x - a; \
291 y = b - bvirt

◆ INEXACT

#define INEXACT   /* Nothing */

Definition at line 262 of file PolygonTriangulator.cxx.

◆ REAL

#define REAL   double /* float or double */

Definition at line 265 of file PolygonTriangulator.cxx.

◆ Split

#define Split ( a,
ahi,
alo )
Value:
c = (REAL) (1.0 * a); \
abig = (REAL) (c - a); \
ahi = c - abig; \
alo = a - ahi

Definition at line 322 of file PolygonTriangulator.cxx.

322#define Split(a, ahi, alo) \
323 c = (REAL) (1.0 * a); \
324 abig = (REAL) (c - a); \
325 ahi = c - abig; \
326 alo = a - ahi

◆ sqr

#define sqr ( t)
Value:
(t)*(t)

Definition at line 113 of file PolygonTriangulator.cxx.

◆ Two_Diff

#define Two_Diff ( a,
b,
x,
y )
Value:
x = (REAL) (a - b); \
Two_Diff_Tail(a, b, x, y)

Definition at line 315 of file PolygonTriangulator.cxx.

315#define Two_Diff(a, b, x, y) \
316 x = (REAL) (a - b); \
317 Two_Diff_Tail(a, b, x, y)

◆ Two_Diff_Tail

#define Two_Diff_Tail ( a,
b,
x,
y )
Value:
bvirt = (REAL) (a - x); \
avirt = x + bvirt; \
bround = bvirt - b; \
around = a - avirt; \
y = around + bround

Definition at line 308 of file PolygonTriangulator.cxx.

308#define Two_Diff_Tail(a, b, x, y) \
309 bvirt = (REAL) (a - x); \
310 avirt = x + bvirt; \
311 bround = bvirt - b; \
312 around = a - avirt; \
313 y = around + bround

◆ Two_One_Diff

#define Two_One_Diff ( a1,
a0,
b,
x2,
x1,
x0 )
Value:
Two_Diff(a0, b , x_i, x0); \
Two_Sum( a1, x_i, x2, x1)
#define Two_Diff(a, b, x, y)
double a0
Definition globals.cxx:27

Definition at line 343 of file PolygonTriangulator.cxx.

343#define Two_One_Diff(a1, a0, b, x2, x1, x0) \
344 Two_Diff(a0, b , x_i, x0); \
345 Two_Sum( a1, x_i, x2, x1)

◆ Two_Product

#define Two_Product ( a,
b,
x,
y )
Value:
x = (REAL) (a * b); \
Two_Product_Tail(a, b, x, y)

Definition at line 336 of file PolygonTriangulator.cxx.

336#define Two_Product(a, b, x, y) \
337 x = (REAL) (a * b); \
338 Two_Product_Tail(a, b, x, y)

◆ Two_Product_Tail

#define Two_Product_Tail ( a,
b,
x,
y )
Value:
Split(a, ahi, alo); \
Split(b, bhi, blo); \
err1 = x - (ahi * bhi); \
err2 = err1 - (alo * bhi); \
err3 = err2 - (ahi * blo); \
y = (alo * blo) - err3
#define Split(a, ahi, alo)

Definition at line 328 of file PolygonTriangulator.cxx.

328#define Two_Product_Tail(a, b, x, y) \
329 Split(a, ahi, alo); \
330 Split(b, bhi, blo); \
331 err1 = x - (ahi * bhi); \
332 err2 = err1 - (alo * bhi); \
333 err3 = err2 - (ahi * blo); \
334 y = (alo * blo) - err3

◆ Two_Sum

#define Two_Sum ( a,
b,
x,
y )
Value:
x = (REAL) (a + b); \
Two_Sum_Tail(a, b, x, y)

Definition at line 304 of file PolygonTriangulator.cxx.

304#define Two_Sum(a, b, x, y) \
305 x = (REAL) (a + b); \
306 Two_Sum_Tail(a, b, x, y)

◆ Two_Sum_Tail

#define Two_Sum_Tail ( a,
b,
x,
y )
Value:
bvirt = (REAL) (x - a); \
avirt = x - bvirt; \
bround = b - bvirt; \
around = a - avirt; \
y = around + bround

Definition at line 297 of file PolygonTriangulator.cxx.

297#define Two_Sum_Tail(a, b, x, y) \
298 bvirt = (REAL) (x - a); \
299 avirt = x - bvirt; \
300 bround = b - bvirt; \
301 around = a - avirt; \
302 y = around + bround

◆ Two_Two_Diff

#define Two_Two_Diff ( a1,
a0,
b1,
b0,
x3,
x2,
x1,
x0 )
Value:
Two_One_Diff(a1, a0, b0, x_j, x_0, x0); \
Two_One_Diff(x_j, x_0, b1, x3, x2, x1)
#define Two_One_Diff(a1, a0, b, x2, x1, x0)

Definition at line 347 of file PolygonTriangulator.cxx.

347#define Two_Two_Diff(a1, a0, b1, b0, x3, x2, x1, x0) \
348 Two_One_Diff(a1, a0, b0, x_j, x_0, x0); \
349 Two_One_Diff(x_j, x_0, b1, x3, x2, x1)