OpendTect-6_4  6.4
fourierinterpol.h
Go to the documentation of this file.
1 #ifndef fourierinterpol_h
2 #define fourierinterpol_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: Bruno
9  Date: Sept 2011
10  RCS: $Id$
11 ________________________________________________________________________
12 
13 -*/
14 
15 #include "algomod.h"
16 #include "algomod.h"
17 #include "arrayndimpl.h"
18 #include "odcomplex.h"
19 #include "ranges.h"
20 #include "paralleltask.h"
21 
22 namespace Fourier { class CC; };
23 
29 {
30 public:
31  void setTargetDomain(bool fourier);
33 protected:
34  FourierInterpolBase();
35  ~FourierInterpolBase();
36 
38 };
39 
40 
46  , public FourierInterpolBase
47 {
48 public:
49 
50  mStruct(Algo) Point
51  {
52  Point(float_complex v,float x)
53  : val_(v), pos_(x) {}
54 
55  float_complex val_;
56  float pos_;
57 
58  inline bool operator == (const Point& p) const
59  { return pos_ == p.pos_; }
60  };
61 
63  const StepInterval<float>& outsampling);
64 
66 
68  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
69 
70 protected:
71  od_int64 nrIterations() const { return pts_.size(); }
72 
73  bool doPrepare(int);
74  bool doWork(od_int64,od_int64,int);
75  bool doFinish(bool);
76 
78 
79  int sz_;
81 
83 };
84 
85 
91  , public FourierInterpolBase
92 {
93 public:
94 
95  mStruct(Algo) Point
96  {
97  Point(float_complex v,float x,float y)
98  : val_(v), xpos_(x) , ypos_(y) {}
99 
100  float_complex val_;
101  float xpos_, ypos_;
102 
103  inline bool operator == (const Point& p) const
104  { return xpos_ == p.xpos_ && ypos_ == p.ypos_; }
105  };
106 
108  const StepInterval<float>& xoutsampling,
109  const StepInterval<float>& youtsampling);
110 
112 
114  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
115 
116 protected:
117  od_int64 nrIterations() const { return pts_.size(); }
118 
119  bool doPrepare(int);
120  bool doWork(od_int64,od_int64,int);
121  bool doFinish(bool);
122 
124 
125  int szx_, szy_;
126  const StepInterval<float>& xsampling_, ysampling_;
127 
129 };
130 
131 
137  , public FourierInterpolBase
138 {
139 public:
140 
142  {
143  Point(float_complex v,float x,float y,float z)
144  : val_(v), xpos_(x) , ypos_(y) , zpos_(z) {}
145 
146  float_complex val_;
147  float xpos_, ypos_, zpos_;
148 
149  inline bool operator == (const Point& p) const
150  {
151  return xpos_ == p.xpos_
152  && ypos_ == p.ypos_
153  && zpos_ == p.zpos_;
154  }
155  };
156 
158  const StepInterval<float>& xoutsampling,
159  const StepInterval<float>& youtsampling,
160  const StepInterval<float>& zoutsampling);
161 
163 
165  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
166 
167 protected:
168  od_int64 nrIterations() const { return pts_.size(); }
169 
170  bool doPrepare(int);
171  bool doWork(od_int64,od_int64,int);
172  bool doFinish(bool);
173 
175 
176  int szx_, szy_, szz_;
177  const StepInterval<float>& xsampling_, ysampling_, zsampling_;
178 
180 };
181 
182 
183 #endif
#define mExpClass(module)
Definition: commondefs.h:160
Does Fourier Transforms of any size.
Definition: fourier.h:30
const StepInterval< float > & sampling_
Definition: fourierinterpol.h:80
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:174
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:53
#define mStruct(module)
Definition: commondefs.h:165
od_int64 nrIterations() const
Definition: fourierinterpol.h:117
#define od_int64
Definition: plftypes.h:36
const Array2DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:113
od_int64 nrIterations() const
Definition: fourierinterpol.h:168
Base class for fourier interpolation.
Definition: fourierinterpol.h:28
const Array1DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:67
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:77
Fourier interpolation for 3D datasets.
Definition: fourierinterpol.h:136
int sz_
Definition: fourierinterpol.h:79
virtual bool isEmpty() const
Definition: arraynd.h:334
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
int szy_
Definition: fourierinterpol.h:125
const StepInterval< float > zsampling_
Definition: fourierinterpol.h:177
Set of pointers to objects.
Definition: commontypes.h:32
Fourier interpolation for 1D datasets.
Definition: fourierinterpol.h:45
Definition: vishorizonsectiondef.h:31
const StepInterval< float > ysampling_
Definition: fourierinterpol.h:126
od_int64 nrIterations() const
Definition: fourierinterpol.h:71
Fourier::CC * fft_
Definition: fourierinterpol.h:37
std::complex< float > float_complex
Definition: odcomplex.h:18
Definition: convolve2d.h:27
int szz_
Definition: fourierinterpol.h:176
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:123
ObjectSet< Array3DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:179
Fourier interpolation for 2D datasets.
Definition: fourierinterpol.h:90
ObjectSet< Array2DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:128
const Array3DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:164
ObjectSet< Array1DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:82

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