Brief description of class still missing. More...
#include <SignalReader.h>
Public Member Functions | |
| void | exec () |
| bool | setOptions (int &argc, char **argv) |
| SignalReader () | |
| ~SignalReader () | |
Protected Member Functions | |
| virtual bool | parse (QTextStream &s) |
Brief description of class still missing.
Full description of class still missing
Description of constructor still missing
References TRACE.
: ArgumentStdinReader() { TRACE; _nSamples=0; _samples=0; //_commonFrequency=-1.0; _deltaT=0.01; _timeLength=600.0; // 10 minutes //_uniqueFrequency=true; _square=false; }
| void SignalReader::exec | ( | ) |
References Wavelet::amplitude, QGpCoreTools::cos(), QGpCoreTools::flush(), Wavelet::frequency, Wavelet::phase, and sOut().
Referenced by main().
{
int nWavelets=_wavelets.count();
double t;
if(_square) {
for(int i=0;i<_nSamples;i++) {
_samples[i]=0.0;
t=(double)i*_deltaT;
for(int iw=0; iw<nWavelets; iw++) {
Wavelet& w=_wavelets[iw];
double a=w.amplitude*cos(2.0*M_PI*w.frequency*t-w.phase);
if(a<=0.0) {
a=0.0;
} else {
a=1.0;
}
_samples[i]+=a;
}
}
} else {
for(int i=0;i<_nSamples;i++) {
_samples[i]=0.0;
t=(double)i*_deltaT;
for(int iw=0; iw<nWavelets; iw++) {
Wavelet& w=_wavelets[iw];
_samples[i]+=w.amplitude*cos(2.0*M_PI*w.frequency*t-w.phase);
}
}
}
QTextStream sOut(stdout);
for(int i=0;i<_nSamples;i++) sOut << _samples[i] << "\n";
sOut << flush;
}
| bool SignalReader::parse | ( | QTextStream & | s | ) | [protected, virtual] |
Implements QGpCoreTools::ArgumentStdinReader.
References QGpCoreTools::Point2D::azimuthTo(), QGpCoreTools::cos(), QGpCoreTools::Point::distanceTo(), and TRACE.
{
TRACE;
QString buf;
buf=s.readLine();
if(!buf.isEmpty() && buf[0]!='\n' && buf[0]!='#') {
bool ok;
if(_velocities.isEmpty()) {
ok=addWavelet(buf, 0.0);
} else {
int n=_velocities.count();
for(int i=0; i<n; i++) {
// Math angle for station position relative to origin
double angle=Point(0,0).azimuthTo(_stationCoord);
angle-=Angle::geographicToMath(_azimuths.at(i));
double propagationDelay=Point(0,0).distanceTo(_stationCoord)*cos(angle)/_velocities.at(i);
ok=addWavelet(buf, propagationDelay);
}
}
return ok;
}
return true;
}
| bool SignalReader::setOptions | ( | int & | argc, |
| char ** | argv | ||
| ) |
References QGpCoreTools::endl(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{
TRACE;
// Check arguments
int i, j=1;
for(i=1; i<argc; i++) {
QByteArray arg=argv[i];
if(arg[0]=='-') {
if(arg=="-f") {
CoreApplication::checkOptionArg(i, argc, argv);
_deltaT=1.0/atof(argv[i] );
} else if(arg=="-t") {
CoreApplication::checkOptionArg(i, argc, argv);
_timeLength=atof(argv[i] );
} else if(arg=="-x") {
CoreApplication::checkOptionArg(i, argc, argv);
_stationCoord.setX(atof( argv[i] ));
} else if(arg=="-y") {
CoreApplication::checkOptionArg(i, argc, argv);
_stationCoord.setY( atof(argv[i] ));
} else if(arg=="-a") {
CoreApplication::checkOptionArg(i, argc, argv);
_azimuths.append(atof(argv[i]));
} else if(arg=="-v") {
CoreApplication::checkOptionArg(i, argc, argv);
_velocities.append(atof(argv[i]));
} else if(arg=="-square") {
_square=true;
} else {
App::stream() << tr("gpsignal: bad option %1, see -help").arg(argv[i]) << endl;
return false;
}
} else {
argv[j++]=argv[i];
}
}
if(j < argc) {
argv[j]=0;
argc=j;
}
if(_velocities.count()!=_azimuths.count()) {
App::stream() << tr("gpsignal: number of -v and -a options must be the same.") << endl;
return false;
}
_nSamples=(int) floor(_timeLength/_deltaT +0.5);
_samples=new double [_nSamples];
return true;
}