OpendTect  6.6
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 RCS: $Id$
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "geometrymod.h"
13 #include "rowcol.h"
14 #include "rowcolsurface.h"
15 
16 
17 namespace Geometry
18 {
19 
20 class ParametricCurve;
21 
24 public:
25  ParametricSurface(const RowCol& origin=RowCol(0,0),
26  const RowCol& step=RowCol(1,1) );
28  ParametricSurface* clone() const = 0;
29 
30  virtual Coord3 computePosition(const Coord&) const;
31  virtual Coord3 computeNormal(const Coord&) const;
32 
33  virtual bool insertRow(int row,int nrnew=1) = 0;
34  virtual bool insertCol(int col,int nrnew=1) = 0;
35  virtual bool removeRow(int startrow,int stoprow) { return false; }
36  virtual bool removeCol(int startcol,int stoprcol) { return false; }
37 
38  virtual StepInterval<int> rowRange() const;
39  virtual StepInterval<int> rowRange(int col) const;
40  virtual StepInterval<int> colRange(int row) const;
41  virtual StepInterval<int> colRange() const;
42 
43  virtual ParametricCurve*
44  createRowCurve( float row,
45  const Interval<int>* colrange=0 ) const;
46  virtual ParametricCurve*
47  createColCurve( float col,
48  const Interval<int>* rowrange=0 ) const;
49 
50  virtual bool circularRows() const { return false; }
51  virtual bool circularCols() const { return false; }
52 
53  virtual bool setKnot(const RowCol&,const Coord3&);
54  virtual bool unsetKnot(const RowCol&);
55  virtual Coord3 getKnot(const RowCol&) const;
56  virtual Coord3 getKnot(const RowCol&,bool interpifudf) const = 0;
57  virtual bool isKnotDefined(const RowCol&) const;
58  bool hasSupport(const RowCol&) const;
59 
60  int nrKnots() const;
61  RowCol getKnotRowCol( int idx ) const;
62 
64  bool setPosition( GeomPosID pid, const Coord3&);
65  bool isDefined( GeomPosID pid ) const;
66 
67  bool isAtEdge(const RowCol&) const;
68 
69  bool checkSupport(bool yn);
71  bool checksSupport() const;
73  bool checkSelfIntersection(bool yn);
75  bool checksSelfIntersection() const;
79 
80  int getKnotIndex(const RowCol& rc) const;
81 protected:
82 
83  virtual void _setKnot( int idx, const Coord3& ) = 0;
84  virtual bool checkSelfIntersection( const RowCol& ) const;
85 
86  int rowIndex(int row) const
87  {
88  return (row - origin_.row()) / step_.row();
89  }
90  int colIndex(int col) const
91  {
92  return (col - origin_.col()) / step_.col();
93  }
94  static int rowDim() { return 0; }
95  static int colDim() { return 1; }
96  virtual int nrRows() const = 0;
97  virtual int nrCols() const = 0;
98  bool isAtSameEdge(const RowCol&,const RowCol&,
99  TypeSet<RowCol>* =0) const;
100 
103 
106 };
107 
108 };
109 
Geometry::ParametricSurface::trimUndefParts
void trimUndefParts()
Geometry::ParametricSurface::getKnotIndex
int getKnotIndex(const RowCol &rc) const
Geometry::ParametricSurface::getKnot
virtual Coord3 getKnot(const RowCol &) const
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
Geometry::ParametricSurface::origin_
RowCol origin_
Definition: parametricsurface.h:104
Geometry::ParametricSurface::checkselfintersection_
bool checkselfintersection_
Definition: parametricsurface.h:102
Geometry::ParametricSurface::hasSupport
bool hasSupport(const RowCol &) const
Geometry::ParametricSurface::checkSupport
bool checkSupport(bool yn)
Geometry::ParametricSurface::getPosition
Coord3 getPosition(GeomPosID pid) const
rowcolsurface.h
Geometry::ParametricSurface::createColCurve
virtual ParametricCurve * createColCurve(float col, const Interval< int > *rowrange=0) const
Geometry::ParametricSurface::ParametricSurface
ParametricSurface(const RowCol &origin=RowCol(0, 0), const RowCol &step=RowCol(1, 1))
Geometry::ParametricSurface::colRange
virtual StepInterval< int > colRange() const
Geometry::ParametricSurface::step_
RowCol step_
Definition: parametricsurface.h:105
Geometry
Definition: arraytesselator.h:21
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Geometry::ParametricCurve
A curve that is defined by regularly sampled positions.
Definition: parametriccurve.h:32
Geometry::ParametricSurface::checksupport_
bool checksupport_
Definition: parametricsurface.h:101
Geometry::ParametricSurface
Definition: parametricsurface.h:23
Geometry::ParametricSurface::mODTextTranslationClass
mODTextTranslationClass(ParametricSurface)
Geometry::ParametricSurface::checkSelfIntersection
bool checkSelfIntersection(bool yn)
Geometry::ParametricSurface::colDim
static int colDim()
Definition: parametricsurface.h:95
Geometry::ParametricSurface::colIndex
int colIndex(int col) const
Definition: parametricsurface.h:90
Pos::IdxPair::row
IdxType & row()
Definition: posidxpair.h:44
Geometry::ParametricSurface::isAtSameEdge
bool isAtSameEdge(const RowCol &, const RowCol &, TypeSet< RowCol > *=0) const
Geometry::ParametricSurface::unsetKnot
virtual bool unsetKnot(const RowCol &)
Geometry::RowColSurface
Definition: rowcolsurface.h:26
Pos::IdxPair::col
IdxType & col()
Definition: posidxpair.h:49
Geometry::ParametricSurface::checksSupport
bool checksSupport() const
Geometry::ParametricSurface::clone
ParametricSurface * clone() const =0
StepInterval< int >
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
Geometry::ParametricSurface::rowIndex
int rowIndex(int row) const
Definition: parametricsurface.h:86
Geometry::ParametricSurface::~ParametricSurface
~ParametricSurface()
Geometry::ParametricSurface::rowRange
virtual StepInterval< int > rowRange(int col) const
Geometry::ParametricSurface::computePosition
virtual Coord3 computePosition(const Coord &) const
Geometry::ParametricSurface::nrRows
virtual int nrRows() const =0
Geometry::ParametricSurface::createRowCurve
virtual ParametricCurve * createRowCurve(float row, const Interval< int > *colrange=0) const
Geometry::ParametricSurface::checksSelfIntersection
bool checksSelfIntersection() const
Geometry::ParametricSurface::_setKnot
virtual void _setKnot(int idx, const Coord3 &)=0
Geometry::ParametricSurface::checkSelfIntersection
virtual bool checkSelfIntersection(const RowCol &) const
Geometry::ParametricSurface::setPosition
bool setPosition(GeomPosID pid, const Coord3 &)
Geometry::ParametricSurface::colRange
virtual StepInterval< int > colRange(int row) const
Geometry::ParametricSurface::nrCols
virtual int nrCols() const =0
Geometry::ParametricSurface::rowDim
static int rowDim()
Definition: parametricsurface.h:94
Geometry::ParametricSurface::removeCol
virtual bool removeCol(int startcol, int stoprcol)
Definition: parametricsurface.h:36
Geometry::ParametricSurface::circularCols
virtual bool circularCols() const
Definition: parametricsurface.h:51
Geometry::ParametricSurface::isAtEdge
bool isAtEdge(const RowCol &) const
Geometry::ParametricSurface::computeNormal
virtual Coord3 computeNormal(const Coord &) const
Geometry::ParametricSurface::removeRow
virtual bool removeRow(int startrow, int stoprow)
Definition: parametricsurface.h:35
Geometry::ParametricSurface::insertCol
virtual bool insertCol(int col, int nrnew=1)=0
Geometry::ParametricSurface::getKnotRowCol
RowCol getKnotRowCol(int idx) const
Geometry::ParametricSurface::isKnotDefined
virtual bool isKnotDefined(const RowCol &) const
Geometry::ParametricSurface::setKnot
virtual bool setKnot(const RowCol &, const Coord3 &)
Geometry::ParametricSurface::nrKnots
int nrKnots() const
GeomPosID
od_int64 GeomPosID
Definition: geomelement.h:20
RowCol
IdxPair used for its row() and col().
Definition: rowcol.h:25
Geometry::ParametricSurface::isDefined
bool isDefined(GeomPosID pid) const
MPE::step_
RowCol step_
Definition: horizontracker.h:140
Interval< int >
Geometry::ParametricSurface::insertRow
virtual bool insertRow(int row, int nrnew=1)=0
rowcol.h
Geometry::ParametricSurface::getKnot
virtual Coord3 getKnot(const RowCol &, bool interpifudf) const =0
Geometry::ParametricSurface::rowRange
virtual StepInterval< int > rowRange() const
Geometry::ParametricSurface::circularRows
virtual bool circularRows() const
Definition: parametricsurface.h:50
TypeSet< RowCol >

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