OpendTect
6.6
|
Reference: "Parallel Incremental Delaunay Triangulation", by Kohout J.2005. More...
Classes | |
struct | DAGTriangle |
Public Member Functions | |
DAGTriangleTree () | |
DAGTriangleTree (const DAGTriangleTree &) | |
virtual | ~DAGTriangleTree () |
const TypeSet< Coord > & | coordList () const |
void | dumpTo (od_ostream &) const |
Dumps all triangles to stream;. More... | |
void | dumpTriangulationToIV (od_ostream &) const |
bool | getConnectionAndWeights (int ptidx, TypeSet< int > &conns, TypeSet< double > &weights, bool normailze=true) const |
bool | getConnections (int pointidx, TypeSet< int > &) const |
bool | getCoordIndices (TypeSet< int > &) const |
const Coord | getInitCoord (int vetexidx) const |
bool | getSurroundingIndices (TypeSet< int > &) const |
bool | getTriangle (const Coord &, int &dupid, TypeSet< int > &vertexindices) const |
bool | getWeights (int pointidx, const TypeSet< int > &conns, TypeSet< double > &weights, bool normalize=true) const |
bool | init () |
int | insertPoint (const Coord &, int &dupid) |
bool | insertPoint (int pointidx, int &dupid) |
bool | isOK () const |
DAGTriangleTree & | operator= (const DAGTriangleTree &) |
bool | setBBox (const Interval< double > &xrg, const Interval< double > &yrg) |
bool | setCoordList (const TypeSet< Coord > *OD) |
bool | setCoordList (TypeSet< Coord > *, OD::PtrPolicy) |
void | setEpsilon (double err) |
Static Public Member Functions | |
static int | cNoVertex () |
static bool | computeCoordRanges (const TypeSet< Coord > &, Interval< double > &, Interval< double > &) |
Protected Member Functions | |
int | getNeighbor (int v0, int v1, int ti) const |
char | isInside (const Coord &pt, int ti, int &dupid) const |
void | legalizeTriangles (TypeSet< char > &v0s, TypeSet< char > &v1s, TypeSet< int > &tis) |
int | searchChild (int v0, int v1, int ti) const |
char | searchFurther (const Coord &pt, int &nti0, int &dupid) const |
char | searchTriangle (const Coord &pt, int start, int &t0, int &dupid) const |
void | splitTriangleInside (int ci, int ti) |
Static Protected Member Functions | |
static char | cError () |
static int | cInitVertex0 () |
static int | cInitVertex1 () |
static int | cInitVertex2 () |
static char | cIsDuplicate () |
static char | cIsInside () |
static char | cIsOutside () |
static int | cNoTriangle () |
Protected Attributes | |
TypeSet< Coord > * | coordlist_ |
Threads::ReadWriteLock | coordlock_ |
double | epsilon_ |
Coord | initialcoords_ [3] |
bool | multithreadsupport_ |
bool | ownscoordlist_ |
Threads::ReadWriteLock | trianglelock_ |
TypeSet< DAGTriangle > | triangles_ |
Reference: "Parallel Incremental Delaunay Triangulation", by Kohout J.2005.
For the triangulation, it will skip undefined or duplicated points, all the points should be in random order. We use Kohout's pessimistic method to triangulate. The problem is that the pessimistic method only give a 10% speed increase, while the locks slows it down. The parallel code is thus disabled with a macro.
<>
DAGTriangleTree::DAGTriangleTree | ( | ) |
DAGTriangleTree::DAGTriangleTree | ( | const DAGTriangleTree & | ) |
|
virtual |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestatic |
|
static |
void DAGTriangleTree::dumpTo | ( | od_ostream & | ) | const |
Dumps all triangles to stream;.
void DAGTriangleTree::dumpTriangulationToIV | ( | od_ostream & | ) | const |
bool DAGTriangleTree::getConnectionAndWeights | ( | int | ptidx, |
TypeSet< int > & | conns, | ||
TypeSet< double > & | weights, | ||
bool | normailze = true |
||
) | const |
Calculate inverse distance weight for each conns.
bool DAGTriangleTree::getConnections | ( | int | pointidx, |
TypeSet< int > & | |||
) | const |
Points on the edge of the geometry shape.
bool DAGTriangleTree::getCoordIndices | ( | TypeSet< int > & | ) | const |
Coord indices are sorted in threes, i.e ci[0], ci[1], ci[2] is the first triangle ci[3], ci[4], ci[5] is the second triangle.
const Coord DAGTriangleTree::getInitCoord | ( | int | vetexidx | ) | const |
|
protected |
Check neighbor triangle of the edge v0-v1 in ti, where v0, v1 are local vetex indices 0, 1, 2.
bool DAGTriangleTree::getSurroundingIndices | ( | TypeSet< int > & | ) | const |
bool DAGTriangleTree::getTriangle | ( | const Coord & | , |
int & | dupid, | ||
TypeSet< int > & | vertexindices | ||
) | const |
search triangle contains the point.return crds.
bool DAGTriangleTree::getWeights | ( | int | pointidx, |
const TypeSet< int > & | conns, | ||
TypeSet< double > & | weights, | ||
bool | normalize = true |
||
) | const |
bool DAGTriangleTree::init | ( | ) |
int DAGTriangleTree::insertPoint | ( | const Coord & | , |
int & | dupid | ||
) |
bool DAGTriangleTree::insertPoint | ( | int | pointidx, |
int & | dupid | ||
) |
|
protected |
|
inline |
|
protected |
ci is assumed to be inside the triangle ti.
DAGTriangleTree& DAGTriangleTree::operator= | ( | const DAGTriangleTree & | ) |
|
protected |
|
protected |
|
protected |
bool DAGTriangleTree::setCoordList | ( | TypeSet< Coord > * | , |
OD::PtrPolicy | |||
) |
|
inline |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
-2,-3,-4 are their indices.
|
protected |
|
protected |
|
mutableprotected |
|
protected |
Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2022