OpendTect  6.3
fourierinterpol.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: Bruno
8  Date: Sept 2011
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "algomod.h"
14 #include "algomod.h"
15 #include "arrayndimpl.h"
16 #include "odcomplex.h"
17 #include "ranges.h"
18 #include "paralleltask.h"
19 
20 namespace Fourier { class CC; };
21 
27 {
28 public:
29  void setTargetDomain(bool fourier);
31 protected:
32  FourierInterpolBase();
33  ~FourierInterpolBase();
34 
36 };
37 
38 
44  , public FourierInterpolBase
45 {
46 public:
47 
48  mStruct(Algo) Point
49  {
50  Point(float_complex v,float x)
51  : val_(v), pos_(x) {}
52 
53  float_complex val_;
54  float pos_;
55 
56  inline bool operator == (const Point& p) const
57  { return pos_ == p.pos_; }
58  };
59 
61  const StepInterval<float>& outsampling);
62 
64 
66  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
67 
68 protected:
69  od_int64 nrIterations() const { return pts_.size(); }
70 
71  bool doPrepare(int);
72  bool doWork(od_int64,od_int64,int);
73  bool doFinish(bool);
74 
76 
77  int sz_;
79 
81 };
82 
83 
89  , public FourierInterpolBase
90 {
91 public:
92 
93  mStruct(Algo) Point
94  {
95  Point(float_complex v,float x,float y)
96  : val_(v), xpos_(x) , ypos_(y) {}
97 
98  float_complex val_;
99  float xpos_, ypos_;
100 
101  inline bool operator == (const Point& p) const
102  { return xpos_ == p.xpos_ && ypos_ == p.ypos_; }
103  };
104 
106  const StepInterval<float>& xoutsampling,
107  const StepInterval<float>& youtsampling);
108 
110 
112  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
113 
114 protected:
115  od_int64 nrIterations() const { return pts_.size(); }
116 
117  bool doPrepare(int);
118  bool doWork(od_int64,od_int64,int);
119  bool doFinish(bool);
120 
122 
123  int szx_, szy_;
124  const StepInterval<float>& xsampling_, ysampling_;
125 
127 };
128 
129 
135  , public FourierInterpolBase
136 {
137 public:
138 
140  {
141  Point(float_complex v,float x,float y,float z)
142  : val_(v), xpos_(x) , ypos_(y) , zpos_(z) {}
143 
144  float_complex val_;
145  float xpos_, ypos_, zpos_;
146 
147  inline bool operator == (const Point& p) const
148  {
149  return xpos_ == p.xpos_
150  && ypos_ == p.ypos_
151  && zpos_ == p.zpos_;
152  }
153  };
154 
156  const StepInterval<float>& xoutsampling,
157  const StepInterval<float>& youtsampling,
158  const StepInterval<float>& zoutsampling);
159 
161 
163  { return arrs_.isEmpty() ? 0 : arrs_[0]; }
164 
165 protected:
166  od_int64 nrIterations() const { return pts_.size(); }
167 
168  bool doPrepare(int);
169  bool doWork(od_int64,od_int64,int);
170  bool doFinish(bool);
171 
173 
174  int szx_, szy_, szz_;
175  const StepInterval<float>& xsampling_, ysampling_, zsampling_;
176 
178 };
#define mExpClass(module)
Definition: commondefs.h:157
Does Fourier Transforms of any size.
Definition: fourier.h:28
const StepInterval< float > & sampling_
Definition: fourierinterpol.h:78
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:172
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
#define mStruct(module)
Definition: commondefs.h:162
od_int64 nrIterations() const
Definition: fourierinterpol.h:115
#define od_int64
Definition: plftypes.h:34
const Array2DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:111
od_int64 nrIterations() const
Definition: fourierinterpol.h:166
Base class for fourier interpolation.
Definition: fourierinterpol.h:26
const Array1DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:65
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:75
Fourier interpolation for 3D datasets.
Definition: fourierinterpol.h:134
int sz_
Definition: fourierinterpol.h:77
virtual bool isEmpty() const
Definition: arraynd.h:330
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:64
int szy_
Definition: fourierinterpol.h:123
const StepInterval< float > zsampling_
Definition: fourierinterpol.h:175
Set of pointers to objects.
Definition: commontypes.h:28
Fourier interpolation for 1D datasets.
Definition: fourierinterpol.h:43
Definition: vishorizonsectiondef.h:30
const StepInterval< float > ysampling_
Definition: fourierinterpol.h:124
od_int64 nrIterations() const
Definition: fourierinterpol.h:69
Fourier::CC * fft_
Definition: fourierinterpol.h:35
std::complex< float > float_complex
Definition: odcomplex.h:16
Definition: convolve2d.h:25
int szz_
Definition: fourierinterpol.h:174
const TypeSet< Point > & pts_
Definition: fourierinterpol.h:121
ObjectSet< Array3DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:177
Fourier interpolation for 2D datasets.
Definition: fourierinterpol.h:88
ObjectSet< Array2DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:126
const Array3DImpl< float_complex > * getOutput() const
Definition: fourierinterpol.h:162
ObjectSet< Array1DImpl< float_complex > > arrs_
Definition: fourierinterpol.h:80

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