OpendTect  7.0
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
DAGTetrahedraTree Class Reference

Delaunay triangulation for 3D points. Should make sure all the points are defined. More...

Classes

struct  DAGTetrahedra
 

Public Member Functions

 DAGTetrahedraTree ()
 
 DAGTetrahedraTree (const DAGTetrahedraTree &)
 
virtual ~DAGTetrahedraTree ()
 
const TypeSet< Coord3 > & coordList () const
 
bool getConnections (int pointidx, TypeSet< int > &) const
 
float getInitSizeFactor () const
 
bool getSurfaceTriangles (TypeSet< int > &) const
 
bool getTetrahedras (TypeSet< int > &) const
 
bool init ()
 
int insertPoint (const Coord3 &, int &dupid)
 
bool insertPoint (int pointidx, int &dupid)
 
bool isOK () const
 
char locationToTetrahedra (const Coord3 &checkpt, const Coord3 *v, char &face, int &dupididx, int &edgeend0idx, int &edgeend1idx, double &dist) const
 
DAGTetrahedraTreeoperator= (const DAGTetrahedraTree &)
 
char searchTetrahedra (const Coord3 &)
 
bool setBBox (const Interval< double > &xrg, const Interval< double > &yrg, const Interval< double > &zrg)
 
bool setCoordList (const TypeSet< Coord3 > &, bool copy)
 
void setEpsilon (double err)
 
void setInitSizeFactor (float)
 

Static Public Member Functions

static char cNoVertex ()
 
static bool computeCoordRanges (const TypeSet< Coord3 > &, Interval< double > &xrg, Interval< double > &yrg, Interval< double > &zrg)
 

Protected Member Functions

void addTriangle (int v0, int v1, int v2, TypeSet< int > &triangles) const
 
char isIntersect (const Coord3 &p, const Coord3 &q, const Coord3 &a, const Coord3 &b, const Coord3 &c, char &edge) const
 
char isOnEdge (const Coord3 &p, const Coord3 &a, const Coord3 &b, const Coord3 planenormal, bool &duponfirst, double &signedsqdist) const
 
void legalizeTetrahedras (TypeSet< int > &v0s, TypeSet< int > &v1s, TypeSet< int > &v2s, TypeSet< int > &tis)
 
char location (int ci, int ti, char &face, int &dupid, int &edgeend0, int &edgeend1, double &dist) const
 
char locationToTriangle (const Coord3 &pt, const Coord3 &a, const Coord3 &b, const Coord3 &c, double &signedsqdist, double &closeedgedist, char &dupid, char &edgeidx) const
 
int searchFaceOnChild (int a, int b, int c, int ti) const
 
int searchFaceOnList (int ci, int v0, int v1, int rep, const TypeSet< int > &tis) const
 
int searchFaceOnNeighbor (int a, int b, int c, int ti) const
 
char searchTetrahedra (int ci, int start, TypeSet< int > &tis, char &face, int &sharedv0, int &sharedv1, int &dupid) const
 
void splitInitialBox (int ci)
 
void splitTetrahedraInside (int ci, int ti)
 
void splitTetrahedraOnEdge (int ci, const TypeSet< int > &tis, int &sharedv0, int &sharedv1)
 
void splitTetrahedraOnFace (int ci, int ti0, int ti1, char face)
 

Static Protected Member Functions

static char cEdge01 ()
 
static char cEdge12 ()
 
static char cEdge20 ()
 
static char cError ()
 
static char cInitVertex0 ()
 
static char cInitVertex1 ()
 
static char cInitVertex2 ()
 
static char cInitVertex3 ()
 
static char cIsDuplicate ()
 
static char cIsInside ()
 
static char cIsOnEdge ()
 
static char cIsOnFace ()
 
static char cIsOutside ()
 
static char cNoFace ()
 
static char cNoTetrahedra ()
 
static char cNotOnEdge ()
 
static char cNotOnPlane ()
 

Protected Attributes

Coord3 center_
 
TypeSet< Coord3 > * coordlist_
 
double epsilon_
 
Coord3 initialcoords_ [4]
 
float initsizefactor_
 
bool ownscoordlist_
 
TypeSet< DAGTetrahedratetrahedras_
 

Detailed Description

Delaunay triangulation for 3D points. Should make sure all the points are defined.

<>

Constructor & Destructor Documentation

◆ DAGTetrahedraTree() [1/2]

DAGTetrahedraTree::DAGTetrahedraTree ( )

◆ DAGTetrahedraTree() [2/2]

DAGTetrahedraTree::DAGTetrahedraTree ( const DAGTetrahedraTree )

◆ ~DAGTetrahedraTree()

virtual DAGTetrahedraTree::~DAGTetrahedraTree ( )
virtual

Member Function Documentation

◆ addTriangle()

void DAGTetrahedraTree::addTriangle ( int  v0,
int  v1,
int  v2,
TypeSet< int > &  triangles 
) const
protected

if triangles have {v0,v1,v2}, then return, else, add it.

◆ cEdge01()

static char DAGTetrahedraTree::cEdge01 ( )
inlinestaticprotected

◆ cEdge12()

static char DAGTetrahedraTree::cEdge12 ( )
inlinestaticprotected

◆ cEdge20()

static char DAGTetrahedraTree::cEdge20 ( )
inlinestaticprotected

◆ cError()

static char DAGTetrahedraTree::cError ( )
inlinestaticprotected

◆ cInitVertex0()

static char DAGTetrahedraTree::cInitVertex0 ( )
inlinestaticprotected

◆ cInitVertex1()

static char DAGTetrahedraTree::cInitVertex1 ( )
inlinestaticprotected

◆ cInitVertex2()

static char DAGTetrahedraTree::cInitVertex2 ( )
inlinestaticprotected

◆ cInitVertex3()

static char DAGTetrahedraTree::cInitVertex3 ( )
inlinestaticprotected

◆ cIsDuplicate()

static char DAGTetrahedraTree::cIsDuplicate ( )
inlinestaticprotected

◆ cIsInside()

static char DAGTetrahedraTree::cIsInside ( )
inlinestaticprotected

◆ cIsOnEdge()

static char DAGTetrahedraTree::cIsOnEdge ( )
inlinestaticprotected

◆ cIsOnFace()

static char DAGTetrahedraTree::cIsOnFace ( )
inlinestaticprotected

◆ cIsOutside()

static char DAGTetrahedraTree::cIsOutside ( )
inlinestaticprotected

◆ cNoFace()

static char DAGTetrahedraTree::cNoFace ( )
inlinestaticprotected

◆ cNoTetrahedra()

static char DAGTetrahedraTree::cNoTetrahedra ( )
inlinestaticprotected

◆ cNotOnEdge()

static char DAGTetrahedraTree::cNotOnEdge ( )
inlinestaticprotected

◆ cNotOnPlane()

static char DAGTetrahedraTree::cNotOnPlane ( )
inlinestaticprotected

◆ cNoVertex()

static char DAGTetrahedraTree::cNoVertex ( )
inlinestatic

◆ computeCoordRanges()

static bool DAGTetrahedraTree::computeCoordRanges ( const TypeSet< Coord3 > &  ,
Interval< double > &  xrg,
Interval< double > &  yrg,
Interval< double > &  zrg 
)
static

◆ coordList()

const TypeSet<Coord3>& DAGTetrahedraTree::coordList ( ) const
inline

◆ getConnections()

bool DAGTetrahedraTree::getConnections ( int  pointidx,
TypeSet< int > &   
) const

◆ getInitSizeFactor()

float DAGTetrahedraTree::getInitSizeFactor ( ) const
inline

◆ getSurfaceTriangles()

bool DAGTetrahedraTree::getSurfaceTriangles ( TypeSet< int > &  ) const

◆ getTetrahedras()

bool DAGTetrahedraTree::getTetrahedras ( TypeSet< int > &  ) const

◆ init()

bool DAGTetrahedraTree::init ( )

◆ insertPoint() [1/2]

int DAGTetrahedraTree::insertPoint ( const Coord3 ,
int &  dupid 
)

◆ insertPoint() [2/2]

bool DAGTetrahedraTree::insertPoint ( int  pointidx,
int &  dupid 
)

◆ isIntersect()

char DAGTetrahedraTree::isIntersect ( const Coord3 p,
const Coord3 q,
const Coord3 a,
const Coord3 b,
const Coord3 c,
char &  edge 
) const
protected

ret inside, outside, on edge, or duplicate. edge will be defined if pq intersects ABC on edge 0, 1, 2 in order.

◆ isOK()

bool DAGTetrahedraTree::isOK ( ) const
inline

◆ isOnEdge()

char DAGTetrahedraTree::isOnEdge ( const Coord3 p,
const Coord3 a,
const Coord3 b,
const Coord3  planenormal,
bool &  duponfirst,
double &  signedsqdist 
) const
protected

◆ legalizeTetrahedras()

void DAGTetrahedraTree::legalizeTetrahedras ( TypeSet< int > &  v0s,
TypeSet< int > &  v1s,
TypeSet< int > &  v2s,
TypeSet< int > &  tis 
)
protected

◆ location()

char DAGTetrahedraTree::location ( int  ci,
int  ti,
char &  face,
int &  dupid,
int &  edgeend0,
int &  edgeend1,
double &  dist 
) const
protected

◆ locationToTetrahedra()

char DAGTetrahedraTree::locationToTetrahedra ( const Coord3 checkpt,
const Coord3 v,
char &  face,
int &  dupididx,
int &  edgeend0idx,
int &  edgeend1idx,
double &  dist 
) const

◆ locationToTriangle()

char DAGTetrahedraTree::locationToTriangle ( const Coord3 pt,
const Coord3 a,
const Coord3 b,
const Coord3 c,
double &  signedsqdist,
double &  closeedgedist,
char &  dupid,
char &  edgeidx 
) const
protected

◆ operator=()

DAGTetrahedraTree& DAGTetrahedraTree::operator= ( const DAGTetrahedraTree )

◆ searchFaceOnChild()

int DAGTetrahedraTree::searchFaceOnChild ( int  a,
int  b,
int  c,
int  ti 
) const
protected

◆ searchFaceOnList()

int DAGTetrahedraTree::searchFaceOnList ( int  ci,
int  v0,
int  v1,
int  rep,
const TypeSet< int > &  tis 
) const
protected

◆ searchFaceOnNeighbor()

int DAGTetrahedraTree::searchFaceOnNeighbor ( int  a,
int  b,
int  c,
int  ti 
) const
protected

◆ searchTetrahedra() [1/2]

char DAGTetrahedraTree::searchTetrahedra ( const Coord3 )

◆ searchTetrahedra() [2/2]

char DAGTetrahedraTree::searchTetrahedra ( int  ci,
int  start,
TypeSet< int > &  tis,
char &  face,
int &  sharedv0,
int &  sharedv1,
int &  dupid 
) const
protected

◆ setBBox()

bool DAGTetrahedraTree::setBBox ( const Interval< double > &  xrg,
const Interval< double > &  yrg,
const Interval< double > &  zrg 
)

◆ setCoordList()

bool DAGTetrahedraTree::setCoordList ( const TypeSet< Coord3 > &  ,
bool  copy 
)

◆ setEpsilon()

void DAGTetrahedraTree::setEpsilon ( double  err)
inline

◆ setInitSizeFactor()

void DAGTetrahedraTree::setInitSizeFactor ( float  )

◆ splitInitialBox()

void DAGTetrahedraTree::splitInitialBox ( int  ci)
protected

◆ splitTetrahedraInside()

void DAGTetrahedraTree::splitTetrahedraInside ( int  ci,
int  ti 
)
protected

◆ splitTetrahedraOnEdge()

void DAGTetrahedraTree::splitTetrahedraOnEdge ( int  ci,
const TypeSet< int > &  tis,
int &  sharedv0,
int &  sharedv1 
)
protected

◆ splitTetrahedraOnFace()

void DAGTetrahedraTree::splitTetrahedraOnFace ( int  ci,
int  ti0,
int  ti1,
char  face 
)
protected

Member Data Documentation

◆ center_

Coord3 DAGTetrahedraTree::center_
protected

◆ coordlist_

TypeSet<Coord3>* DAGTetrahedraTree::coordlist_
protected

◆ epsilon_

double DAGTetrahedraTree::epsilon_
protected

◆ initialcoords_

Coord3 DAGTetrahedraTree::initialcoords_[4]
protected

-2,-3,-4, -5 are their indices.

◆ initsizefactor_

float DAGTetrahedraTree::initsizefactor_
protected

◆ ownscoordlist_

bool DAGTetrahedraTree::ownscoordlist_
protected

◆ tetrahedras_

TypeSet<DAGTetrahedra> DAGTetrahedraTree::tetrahedras_
protected

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2024