00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <stdio.h>
00024 #include <math.h>
00025 #include <float.h>
00026
00027 #include "ArrayBase.hh"
00028
00029
00030 static const char *cpaShadingTypes[] = { "Rectangle", "Blackman",
00031 "Kaiser-Bessel" };
00032
00033
00034 void clArrayBase::SetSampleRate (int iSampleRate)
00035 {
00036 fSampleSpacing = (GDT) 1.0 / (GDT) iSampleRate;
00037 if (bDebug) printf("Sample spacing %g ms\n", fSampleSpacing * 1000.0);
00038 }
00039
00040
00041 void clArrayBase::SetSoundSpeed (GDT fSndSpeed)
00042 {
00043 fSoundSpeed = fSndSpeed;
00044 fSecsPerMeter = (GDT) 1.0 / fSndSpeed;
00045 if (bDebug) printf("Sound speed %g ms/m\n", fSecsPerMeter * 1000.0);
00046 }
00047
00048
00049 void clArrayBase::SetShading (GDT *fpCoeffs, int iShadeType, long lSensCount)
00050 {
00051 if (bDebug) printf("Generate %s shading coefficients for %li sensors\n",
00052 cpaShadingTypes[iShadeType], lSensCount);
00053 switch (iShadeType)
00054 {
00055 case AB_SHADE_RECTANGLE:
00056 DSP.Set(fpCoeffs, (GDT) 1.0, lSensCount);
00057 break;
00058 case AB_SHADE_BLACKMAN:
00059 DSP.WinExactBlackman(fpCoeffs, lSensCount);
00060 break;
00061 case AB_SHADE_KAISER_BESSEL:
00062 DSP.WinKaiserBessel(fpCoeffs, AB_KBWIN_ALPHA, lSensCount);
00063 break;
00064 default:
00065 DSP.Set(fpCoeffs, (GDT) 1.0, lSensCount);
00066 }
00067 }
00068