00001 /*************************************************************************** 00002 ** 00003 ** Copyright (C) 2002-2009 Marc Wathelet. All rights reserved. 00004 ** 00005 ** This file is part of build_array. 00006 ** 00007 ** This file may be distributed and/or modified under the terms of the 00008 ** GNU General Public License version 2 or 3 as published by the Free 00009 ** Software Foundation and appearing in the file LICENSE.GPL included 00010 ** in the packaging of this file. 00011 ** 00012 ** This file is distributed in the hope that it will be useful, but WITHOUT 00013 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 00015 ** more details. 00016 ** 00017 ** See http://www.geopsy.org for more information. 00018 ** 00019 ** Created : 2007-11-13 00020 ** Authors: 00021 ** Marc Wathelet (LGIT, Grenoble, France) 00022 ** 00023 ***************************************************************************/ 00024 00025 #ifndef FKARRAYMAP_H 00026 #define FKARRAYMAP_H 00027 00028 #include <QGpCoreTools.h> 00029 00030 class SourceParameters; 00031 class MediumParameters; 00032 00033 class FKArrayMap : public AbstractFunction2 00034 { 00035 TRANSLATIONS("FKArrayMap") 00036 public: 00037 FKArrayMap(); 00038 ~FKArrayMap(); 00039 00040 void setStations(const QVector<Point2D>& p); 00041 void addSource(); 00042 void removeSource(int index); 00043 void setSourceSignals(int iSrc, const SourceParameters& src, const MediumParameters& medium); 00044 void setStationSignals(); 00045 00046 int sourceCount() const {return _sourceSig.count();} 00047 double theoreticalKmax() const; 00048 00049 virtual double value(double kx, double ky) const; 00050 private: 00051 void uniquePoints(); 00052 00053 QVector<Point2D> _stations; 00054 QVector<Complex> _stationSig; 00055 QVector< QVector<Complex> > _sourceSig; 00056 }; 00057 00058 #endif // FKARRAYMAP_H