OpendTect  6.3
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 ________________________________________________________________________
10 
11 -*/
12 
13 #include "basicmod.h"
14 #include "posidxpair.h"
15 #include "coord.h"
16 
17 
18 namespace Pos
19 {
20 
21 
25 {
26 public:
27 
29 
31 
32  bool operator==(const IdxPair2Coord&) const;
33  bool isSubsetOf(const IdxPair2Coord&) const;
34  bool isValid() const { return xtr.valid(ytr); }
35  Coord firstDir() const { return Coord(xtr.b,ytr.b); }
36  Coord secondDir() const { return Coord(xtr.c,ytr.c); }
37 
38  Coord transform(const IdxPair&) const;
39  IdxPair transformBack(const Coord&) const;
41  IdxPair transformBack(const Coord&,const IdxPair& start,
42  const IdxPairStep&) const;
45  Coord transformBackNoSnap(const Coord&) const;
48  Coord transform(const Coord& rc) const;
52  bool set3Pts(const Coord& c0,const Coord& c1,const Coord& c2,
53  const IdxPair& rc0,const IdxPair& rc1,
54  od_int32 col2 );
59  struct DirTransform
60  {
61  DirTransform() { a = b = c = 0; }
62 
63  inline double det( const DirTransform& bct ) const
64  { return b * bct.c - bct.b * c; }
65  inline bool valid( const DirTransform& bct ) const
66  { double d = det( bct ); return !mIsZero(d,mDefEps); }
67 
68  double a, b, c;
69  };
70 
71  void setTransforms( const DirTransform& x,
72  const DirTransform& y )
73  { xtr = x; ytr = y; }
74  const DirTransform& getTransform( bool x ) const
75  { return x ? xtr : ytr; }
76 
77  // aliases
78 
79  inline Coord rowDir() const { return firstDir(); }
80  inline Coord colDir() const { return secondDir(); }
81  inline Coord inlDir() const { return firstDir(); }
82  inline Coord crlDir() const { return secondDir(); }
83 
84  void fillPar(IOPar&) const;
85  void usePar(const IOPar&);
86  static int sizeInBuf() { return 6*sizeof(double); }
87  void fillBuf(void*) const;
88  void useBuf(const void*);
89 
90 protected:
91 
94 
95  bool isNodeOn(const Pos::IdxPair2Coord&,int,int) const;
96 
97 };
98 
99 
100 } // namespace Pos
#define mExpClass(module)
Definition: commondefs.h:157
void setTransforms(const DirTransform &x, const DirTransform &y)
Definition: posidxpair2coord.h:71
bool valid(const DirTransform &bct) const
Definition: posidxpair2coord.h:65
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
Coord rowDir() const
Definition: posidxpair2coord.h:79
DirTransform()
Definition: posidxpair2coord.h:61
#define mIsZero(x, eps)
Definition: commondefs.h:55
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: posidxpair2coord.h:59
IdxPair with position indices; base class for BinID et al.
Definition: posidxpair.h:27
Coord colDir() const
Definition: posidxpair2coord.h:80
DirTransform xtr
Definition: posidxpair2coord.h:92
Coord inlDir() const
Definition: posidxpair2coord.h:81
Coord firstDir() const
Definition: posidxpair2coord.h:35
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
const DirTransform & getTransform(bool x) const
Definition: posidxpair2coord.h:74
Position.
Definition: commontypes.h:38
double b
Definition: posidxpair2coord.h:68
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
Coord crlDir() const
Definition: posidxpair2coord.h:82
#define mDefEps
Definition: commondefs.h:60
DirTransform ytr
Definition: posidxpair2coord.h:93
IdxPair::IdxType IdxType
Definition: posidxpair2coord.h:28
Coord secondDir() const
Definition: posidxpair2coord.h:36
#define od_int32
Definition: plftypes.h:29
Index_Type IdxType
Definition: idxpair.h:32
Coord2d Coord
Definition: commontypes.h:83
double det(const DirTransform &bct) const
Definition: posidxpair2coord.h:63
2D point or vector class.
Definition: commontypes.h:58
bool isValid() const
Definition: posidxpair2coord.h:34
double c
Definition: posidxpair2coord.h:68
Encapsulates linear transform from (i,j) index to (x,y) coordinates.
Definition: posidxpair2coord.h:24
IdxPair2Coord()
Definition: posidxpair2coord.h:30
static int sizeInBuf()
Definition: posidxpair2coord.h:86

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