OpendTect  6.3
parametricsurface.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6 Author: K. Tingdahl
7 ________________________________________________________________________
8 
9 -*/
10 
11 #include "geometrymod.h"
12 #include "rowcol.h"
13 #include "rowcolsurface.h"
14 
15 
16 namespace Geometry
17 {
18 
19 class ParametricCurve;
20 
23 public:
24  ParametricSurface(const RowCol& origin=RowCol(0,0),
25  const RowCol& step=RowCol(1,1) );
27  ParametricSurface* clone() const = 0;
28 
29  virtual Coord3 computePosition(const Coord&) const;
30  virtual Coord3 computeNormal(const Coord&) const;
31 
32  virtual bool insertRow(int row,int nrnew=1) = 0;
33  virtual bool insertCol(int col,int nrnew=1) = 0;
34  virtual bool removeRow(int startrow,int stoprow) { return false; }
35  virtual bool removeCol(int startcol,int stoprcol) { return false; }
36 
37  virtual StepInterval<int> rowRange() const;
38  virtual StepInterval<int> rowRange(int col) const;
39  virtual StepInterval<int> colRange(int row) const;
40  virtual StepInterval<int> colRange() const;
41 
42  virtual ParametricCurve*
43  createRowCurve( float row,
44  const Interval<int>* colrange=0 ) const;
45  virtual ParametricCurve*
46  createColCurve( float col,
47  const Interval<int>* rowrange=0 ) const;
48 
49  virtual bool circularRows() const { return false; }
50  virtual bool circularCols() const { return false; }
51 
52  virtual bool setKnot(const RowCol&,const Coord3&);
53  virtual bool unsetKnot(const RowCol&);
54  virtual Coord3 getKnot(const RowCol&) const;
55  virtual Coord3 getKnot(const RowCol&,bool interpifudf) const = 0;
56  virtual bool isKnotDefined(const RowCol&) const;
57  bool hasSupport(const RowCol&) const;
58 
59  int nrKnots() const;
60  RowCol getKnotRowCol( int idx ) const;
61 
62  Coord3 getPosition( GeomPosID pid ) const;
63  bool setPosition( GeomPosID pid, const Coord3&);
64  bool isDefined( GeomPosID pid ) const;
65 
66  bool isAtEdge(const RowCol&) const;
67 
68  bool checkSupport(bool yn);
70  bool checksSupport() const;
72  bool checkSelfIntersection(bool yn);
74  bool checksSelfIntersection() const;
77  void trimUndefParts();
78 
79  int getKnotIndex(const RowCol& rc) const;
80 protected:
81 
82  virtual void _setKnot( int idx, const Coord3& ) = 0;
83  virtual bool checkSelfIntersection( const RowCol& ) const;
84 
85  int rowIndex(int row) const
86  {
87  return (row - origin_.row()) / step_.row();
88  }
89  int colIndex(int col) const
90  {
91  return (col - origin_.col()) / step_.col();
92  }
93  static int rowDim() { return 0; }
94  static int colDim() { return 1; }
95  virtual int nrRows() const = 0;
96  virtual int nrCols() const = 0;
97  bool isAtSameEdge(const RowCol&,const RowCol&,
98  TypeSet<RowCol>* =0) const;
99 
102 
105 };
106 
107 };
IdxType & row()
Definition: posidxpair.h:43
#define mExpClass(module)
Definition: commondefs.h:157
A curve that is defined by regularly sampled positions.
Definition: parametriccurve.h:30
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Definition: parametricsurface.h:21
static int colDim()
Definition: parametricsurface.h:94
RowCol step_
Definition: parametricsurface.h:104
RowCol step_
Definition: horizontracker.h:139
od_int64 GeomPosID
Definition: geomelement.h:19
bool checksupport_
Definition: parametricsurface.h:100
int rowIndex(int row) const
Definition: parametricsurface.h:85
3D point or vector
Definition: commontypes.h:57
Definition: rowcolsurface.h:24
int colIndex(int col) const
Definition: parametricsurface.h:89
IdxPair used for its row() and col().
Definition: rowcol.h:23
virtual bool removeRow(int startrow, int stoprow)
Definition: parametricsurface.h:34
IdxType & col()
Definition: posidxpair.h:48
static int rowDim()
Definition: parametricsurface.h:93
virtual bool circularCols() const
Definition: parametricsurface.h:50
virtual bool removeCol(int startcol, int stoprcol)
Definition: parametricsurface.h:35
virtual bool circularRows() const
Definition: parametricsurface.h:49
2D point or vector class.
Definition: commontypes.h:58
RowCol origin_
Definition: parametricsurface.h:103
bool checkselfintersection_
Definition: parametricsurface.h:101
Definition: arraytesselator.h:19

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