00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef INTENSITYMODEL_H_
00021 #define INTENSITYMODEL_H_
00022
00023 #include "AnalogueModel.h"
00024 #include "Mapping.h"
00025 #include "Signal_.h"
00026 #include "BaseWorldUtility.h"
00027 #include <math.h>
00028
00029 #define PI 3.1415926
00030
00036 class IntensityModel : public AnalogueModel {
00037
00038 public:
00039 IntensityModel() { }
00040 void filterSignal(Signal& s) {
00041 TimeMapping<Linear>* attMapping = new TimeMapping<Linear> ();
00042
00043
00044 Move srcMove = s.getMove();
00045 Coord srcCoord, rcvCoord;
00046 double distance = 0;
00047 srcCoord = srcMove.getPositionAt(s.getSignalStart());
00048 rcvCoord = move->getPositionAt(s.getSignalStart());
00049 distance = rcvCoord.distance(srcCoord);
00050
00051 Argument arg;
00052 attMapping->setValue(arg, 4*PI*pow(distance, 2));
00053 s.addAttenuation(attMapping);
00054 }
00055 };
00056
00057 #endif