OpendTect-6_4  6.4
emmarchingcubessurface.h
Go to the documentation of this file.
1 #ifndef emmarchingcubessurface_h
2 #define emmarchingcubessurface_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: Kristofer Tingdahl
9  Date: 4-11-2002
10  RCS: $Id$
11 ________________________________________________________________________
12 
13 
14 -*/
15 
16 #include "earthmodelmod.h"
17 #include "emobject.h"
18 #include "embody.h"
19 #include "samplingdata.h"
20 
22 
23 namespace EM
24 {
25 
26 class BodyOperator;
27 
32 mExpClass(EarthModel) MarchingCubesSurface : public Body, public EMObject
34 public:
35 
36  const char* type() const { return typeStr(); }
37  virtual int nrSections() const { return 1; }
38  virtual SectionID sectionID(int) const { return 0; }
39  virtual bool canSetSectionName() const { return false;}
40 
43  { return 0; }
44  virtual Executor* loader();
45  virtual Executor* saver();
46  virtual Executor* saver(IOObj*);
47  virtual bool isEmpty() const;
48 
49  const IOObjContext& getIOObjContext() const;
50 
51  ::MarchingCubesSurface& surface() { return *mcsurface_; }
52  const ::MarchingCubesSurface& surface() const { return *mcsurface_; }
53  bool setSurface(::MarchingCubesSurface*);
54 
55  const SamplingData<int>& inlSampling() const { return inlsampling_; }
56  const SamplingData<int>& crlSampling() const { return crlsampling_; }
57  const SamplingData<float>& zSampling() const { return zsampling_; }
58  void setInlSampling(const SamplingData<int>&);
59  void setCrlSampling(const SamplingData<int>&);
60  void setZSampling(const SamplingData<float>&);
61 
62  ImplicitBody* createImplicitBody(TaskRunner*,bool) const;
63  bool getBodyRange(TrcKeyZSampling& cs);
64 
65  void refBody();
66  void unRefBody();
67  MultiID storageID() const;
68  BufferString storageName() const;
69 
70  EM::BodyOperator* getBodyOperator() const { return operator_; }
71  void createBodyOperator();
72  void setBodyOperator(EM::BodyOperator*);
73  /*<Set operator only, to use it, call
74  regenerateMCBody() to update the surface.*/
75  bool regenerateMCBody(TaskRunner* tr=0);
76 
77  bool useBodyPar(const IOPar&);
78  void fillBodyPar(IOPar&) const;
79 
81  { return tr("Marching Cubes Body"); }
82 
83 protected:
84 
90 };
91 
92 } // namespace EM
93 
94 #endif
od_int16 SectionID
Definition: emposid.h:25
#define mExpClass(module)
Definition: commondefs.h:160
Definition: ioobj.h:58
const SamplingData< int > & inlSampling() const
Definition: emmarchingcubessurface.h:55
const SamplingData< float > & zSampling() const
Definition: emmarchingcubessurface.h:57
const SamplingData< int > & crlSampling() const
Definition: emmarchingcubessurface.h:56
uiString getUserTypeStr() const
Definition: emmarchingcubessurface.h:80
EM::BodyOperator * getBodyOperator() const
Definition: emmarchingcubessurface.h:70
Definition: uistring.h:89
Geometry::Element * sectionGeometry(const SectionID &)
Definition: emmarchingcubessurface.h:41
Marching cubes surface.
Definition: emmarchingcubessurface.h:32
::MarchingCubesSurface & surface()
Definition: emmarchingcubessurface.h:51
const Geometry::Element * sectionGeometry(const SectionID &) const
Definition: emmarchingcubessurface.h:42
Operators for implicit body. Each BodyOperator has two children, either a Body or a BodyOperator...
Definition: embodyoperator.h:41
virtual bool canSetSectionName() const
Definition: emmarchingcubessurface.h:39
Definition: marchingcubes.h:82
#define mDefineEMObjFuncs(clss)
Definition: emobject.h:373
const char * type() const
Definition: emmarchingcubessurface.h:36
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:47
Class that can execute a task.
Definition: task.h:169
SamplingData< int > inlsampling_
Definition: emmarchingcubessurface.h:85
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
SamplingData< float > zsampling_
Definition: emmarchingcubessurface.h:87
EM::BodyOperator * operator_
Definition: emmarchingcubessurface.h:89
virtual int nrSections() const
Definition: emmarchingcubessurface.h:37
virtual SectionID sectionID(int) const
Definition: emmarchingcubessurface.h:38
Definition: geomelement.h:37
A body that can deliver an implicit body.
Definition: embody.h:50
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:40
const ::MarchingCubesSurface & surface() const
Definition: emmarchingcubessurface.h:52
Base class for all EarthModel objects.
Definition: emobject.h:158
::MarchingCubesSurface * mcsurface_
Definition: emmarchingcubessurface.h:88
SamplingData< int > crlsampling_
Definition: emmarchingcubessurface.h:86
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:25
Implicit representation of a body.
Definition: embody.h:32
bool isEmpty(const NLAModel *mdl)
IOObjContext * getIOObjContext(Seis::GeomType, bool forread)
Compound key consisting of ints.
Definition: multiid.h:25
Specification to enable chunkwise execution of a process.
Definition: executor.h:39
Holds the context for selecting and/or creating IOObjs.
Definition: ctxtioobj.h:62

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