OpendTect  6.6
explicitmarchingcubes.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: K. Tingdahl
8  Date: March 2006
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "geometrymod.h"
15 #include "indexedshape.h"
16 #include "multidimstorage.h"
17 #include "thread.h"
18 
20 template <class T> class SamplingData;
21 class TaskRunner;
22 
28 {
29 public:
32 
34  MarchingCubesSurface* getSurface() { return surface_; }
35  const MarchingCubesSurface* getSurface() const { return surface_; }
36  void removeAll(bool deep);
37 
38  bool update(bool forceall,TaskRunner* = 0);
39  bool needsUpdate() const;
40 
41  bool createsNormals() const { return true; }
42 
43 protected:
44 
45  friend class ExplicitMarchingCubesSurfaceUpdater;
47 
48  bool allBucketsHaveChanged() const;
49 
50  bool update(const Interval<int>& xrg,
51  const Interval<int>& yrg,
52  const Interval<int>& zrg,TaskRunner* = 0);
53  void removeBuckets(const Interval<int>& xrg,
54  const Interval<int>& yrg,
55  const Interval<int>& zrg);
56  bool updateIndices(const int* pos);
57  bool getCoordIndices(const int* pos,int* res);
58  bool updateCoordinates(const int* pos);
59  bool updateCoordinate(const int* pos,const int* idxs,
60  int*res);
61  int getBucketPos(int pos) const;
62 
64 
65  Interval<int>* changedbucketranges_[3];
67 
70 
72 };
73 
98 {
99 public:
104 };
105 
106 
111 {
112 public:
115  MarchingCubeTriangleTable triangles_[256];
116 
117  static const MarchingCubeLookupTable& get();
118 };
119 
MarchingCubeLookupTable
Definition: explicitmarchingcubes.h:111
ExplicitMarchingCubesSurface::createsNormals
bool createsNormals() const
Definition: explicitmarchingcubes.h:41
ExplicitMarchingCubesSurface::lastversionupdate_
int lastversionupdate_
Definition: explicitmarchingcubes.h:66
ObjectSet< char >
ExplicitMarchingCubesSurface::surfaceChange
void surfaceChange(CallBacker *)
Geometry
Definition: arraytesselator.h:21
Geometry::IndexedShape
Definition: indexedshape.h:182
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
ExplicitMarchingCubesSurface::removeBuckets
void removeBuckets(const Interval< int > &xrg, const Interval< int > &yrg, const Interval< int > &zrg)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
MultiDimStorage< int >
ExplicitMarchingCubesSurface::needsUpdate
bool needsUpdate() const
ExplicitMarchingCubesSurface::getCoordIndices
bool getCoordIndices(const int *pos, int *res)
ExplicitMarchingCubesSurface::updateCoordinates
bool updateCoordinates(const int *pos)
ExplicitMarchingCubesSurface::update
bool update(bool forceall, TaskRunner *=0)
MarchingCubeLookupTable::MarchingCubeLookupTable
MarchingCubeLookupTable()
ExplicitMarchingCubesSurface::setSurface
void setSurface(MarchingCubesSurface *)
MarchingCubeTriangleTable
Definition: explicitmarchingcubes.h:98
ExplicitMarchingCubesSurface
Definition: explicitmarchingcubes.h:28
MarchingCubeLookupTable::get
static const MarchingCubeLookupTable & get()
MarchingCubeLookupTable::~MarchingCubeLookupTable
~MarchingCubeLookupTable()
ExplicitMarchingCubesSurface::getSurface
MarchingCubesSurface * getSurface()
Definition: explicitmarchingcubes.h:34
indexedshape.h
SamplingData
Holds the fundamental sampling info: start and interval.
Definition: samplingdata.h:22
TaskRunner
Class that can execute a task.
Definition: task.h:170
ExplicitMarchingCubesSurface::~ExplicitMarchingCubesSurface
~ExplicitMarchingCubesSurface()
ExplicitMarchingCubesSurface::ibuckets_
MultiDimStorage< Geometry::IndexedGeometry * > ibuckets_
Definition: explicitmarchingcubes.h:71
ExplicitMarchingCubesSurface::ExplicitMarchingCubesSurface
ExplicitMarchingCubesSurface(MarchingCubesSurface *)
MarchingCubeTriangleTable::nrindices_
TypeSet< unsigned char > nrindices_
Definition: explicitmarchingcubes.h:101
ExplicitMarchingCubesSurface::updateCoordinate
bool updateCoordinate(const int *pos, const int *idxs, int *res)
ExplicitMarchingCubesSurface::update
bool update(const Interval< int > &xrg, const Interval< int > &yrg, const Interval< int > &zrg, TaskRunner *=0)
ExplicitMarchingCubesSurface::allBucketsHaveChanged
bool allBucketsHaveChanged() const
ExplicitMarchingCubesSurface::removeAll
void removeAll(bool deep)
ExplicitMarchingCubesSurface::getSurface
const MarchingCubesSurface * getSurface() const
Definition: explicitmarchingcubes.h:35
MarchingCubeTriangleTable::indices_
ObjectSet< char > indices_
Definition: explicitmarchingcubes.h:100
ExplicitMarchingCubesSurface::surface_
MarchingCubesSurface * surface_
Definition: explicitmarchingcubes.h:63
ExplicitMarchingCubesSurface::coordindices_
MultiDimStorage< int > coordindices_
Definition: explicitmarchingcubes.h:68
ExplicitMarchingCubesSurface::updateIndices
bool updateIndices(const int *pos)
Interval< int >
thread.h
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
MarchingCubesSurface
Definition: marchingcubes.h:82
ExplicitMarchingCubesSurface::coordindiceslock_
Threads::Lock coordindiceslock_
Definition: explicitmarchingcubes.h:69
ExplicitMarchingCubesSurface::getBucketPos
int getBucketPos(int pos) const
multidimstorage.h
TypeSet< unsigned char >

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