OpendTect  6.6
posidxpair2coord.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: Bert
8  Date: Oct 2013
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "basicmod.h"
15 #include "posidxpair.h"
16 #include "coord.h"
17 
18 
19 namespace Pos
20 {
21 
22 
26 {
27 public:
28 
30 
32 
33  bool operator==(const IdxPair2Coord&) const;
34  bool isSubsetOf(const IdxPair2Coord&) const;
35  bool isValid() const { return xtr.valid(ytr); }
36  Coord firstDir() const { return Coord(xtr.b,ytr.b); }
37  Coord secondDir() const { return Coord(xtr.c,ytr.c); }
38 
39  Coord transform(const IdxPair&) const;
40  IdxPair transformBack(const Coord&) const;
42  IdxPair transformBack(const Coord&,const IdxPair& start,
43  const IdxPairStep&) const;
49  Coord transform(const Coord& rc) const;
53  bool set3Pts(const Coord& c0,const Coord& c1,const Coord& c2,
54  const IdxPair& rc0,const IdxPair& rc1,
55  od_int32 col2 );
60  struct DirTransform
61  {
62  DirTransform() { a = b = c = 0; }
63 
64  inline double det( const DirTransform& bct ) const
65  { return b * bct.c - bct.b * c; }
66  inline bool valid( const DirTransform& bct ) const
67  { double d = det( bct ); return !mIsZero(d,mDefEps); }
68 
69  double a, b, c;
70  };
71 
72  void setTransforms( const DirTransform& x,
73  const DirTransform& y )
74  { xtr = x; ytr = y; }
75  const DirTransform& getTransform( bool x ) const
76  { return x ? xtr : ytr; }
77 
78  void fillPar(IOPar&) const;
79  void usePar(const IOPar&);
80 
81  // aliases
82 
83  inline Coord rowDir() const { return firstDir(); }
84  inline Coord colDir() const { return secondDir(); }
85  inline Coord inlDir() const { return firstDir(); }
86  inline Coord crlDir() const { return secondDir(); }
87 
88 
89 protected:
90 
93 
94  bool isNodeOn(const Pos::IdxPair2Coord&,int,int) const;
95 
96 };
97 
98 
99 } // namespace Pos
100 
Pos::IdxPair2Coord::crlDir
Coord crlDir() const
Definition: posidxpair2coord.h:86
Pos::IdxPair2Coord::operator==
bool operator==(const IdxPair2Coord &) const
Pos::IdxPair2Coord::transform
Coord transform(const Coord &rc) const
Pos::IdxPair2Coord::IdxPair2Coord
IdxPair2Coord()
Definition: posidxpair2coord.h:31
Pos::IdxPair2Coord::DirTransform::c
double c
Definition: posidxpair2coord.h:69
Pos::IdxPair2Coord::isNodeOn
bool isNodeOn(const Pos::IdxPair2Coord &, int, int) const
Pos
Position.
Definition: commontypes.h:78
Pos::IdxPair2Coord::transformBackNoSnap
Coord transformBackNoSnap(const Coord &) const
Pos::IdxPair2Coord::secondDir
Coord secondDir() const
Definition: posidxpair2coord.h:37
Pos::IdxPair2Coord::DirTransform::b
double b
Definition: posidxpair2coord.h:69
Pos::IdxPair2Coord::DirTransform::valid
bool valid(const DirTransform &bct) const
Definition: posidxpair2coord.h:66
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Pos::IdxPair2Coord::transform
Coord transform(const IdxPair &) const
mDefEps
#define mDefEps
Definition: commondefs.h:71
Pos::IdxPair2Coord::ytr
DirTransform ytr
Definition: posidxpair2coord.h:92
IdxPair::IdxType
Index_Type IdxType
Definition: idxpair.h:33
Pos::IdxPair2Coord::getTransform
const DirTransform & getTransform(bool x) const
Definition: posidxpair2coord.h:75
Pos::IdxPair2Coord::usePar
void usePar(const IOPar &)
Pos::IdxPair2Coord::fillPar
void fillPar(IOPar &) const
Pos::IdxPair2Coord::isValid
bool isValid() const
Definition: posidxpair2coord.h:35
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
Pos::IdxPair2Coord::xtr
DirTransform xtr
Definition: posidxpair2coord.h:91
Pos::IdxPair2Coord::isSubsetOf
bool isSubsetOf(const IdxPair2Coord &) const
Pos::IdxPair2Coord::IdxType
IdxPair::IdxType IdxType
Definition: posidxpair2coord.h:29
Pos::IdxPair2Coord::DirTransform
Definition: posidxpair2coord.h:61
mIsZero
#define mIsZero(x, eps)
Definition: commondefs.h:66
posidxpair.h
Pos::IdxPair2Coord::setTransforms
void setTransforms(const DirTransform &x, const DirTransform &y)
Definition: posidxpair2coord.h:72
Pos::IdxPair2Coord::DirTransform::DirTransform
DirTransform()
Definition: posidxpair2coord.h:62
Pos::IdxPair2Coord::colDir
Coord colDir() const
Definition: posidxpair2coord.h:84
Pos::IdxPair2Coord::transformBack
IdxPair transformBack(const Coord &, const IdxPair &start, const IdxPairStep &) const
Pos::IdxPair2Coord::inlDir
Coord inlDir() const
Definition: posidxpair2coord.h:85
od_int32
#define od_int32
Definition: plftypes.h:30
Pos::IdxPair2Coord::firstDir
Coord firstDir() const
Definition: posidxpair2coord.h:36
Pos::IdxPair2Coord::set3Pts
bool set3Pts(const Coord &c0, const Coord &c1, const Coord &c2, const IdxPair &rc0, const IdxPair &rc1, int col2)
Pos::IdxPair2Coord::transformBack
IdxPair transformBack(const Coord &) const
Pos::IdxPair2Coord::DirTransform::det
double det(const DirTransform &bct) const
Definition: posidxpair2coord.h:64
Pos::IdxPair2Coord
Encapsulates linear transform from (i,j) index to (x,y) coordinates.
Definition: posidxpair2coord.h:26
Pos::IdxPair
IdxPair with position indices; base class for BinID et al.
Definition: posidxpair.h:29
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
Pos::IdxPair2Coord::rowDir
Coord rowDir() const
Definition: posidxpair2coord.h:83
coord.h

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