mgardner.cpp
来自「QAM module to use in Java with an easy i」· C++ 代码 · 共 52 行
CPP
52 行
//---------------------------------------------------------------------------
#pragma hdrstop
#include "MGardner.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
void __fastcall MGardner::OffPointUpdate(PtComplex Point)
{
y[1].re=Point.re;
y[1].im=Point.im;
}
void __fastcall MGardner::OnPointUpdate(PtComplex Point)
{
y[0].re=y[2].re;
y[0].im=y[2].im;
y[2].re=Point.re;
y[2].im=Point.im;
PtComplex mid;
mid.re=0.5*(y[2].re+y[0].re);
mid.im=0.5*(y[2].im+y[0].im);
double e=((y[0].re-y[2].re)*(y[1].re-mid.re))+((y[0].im-y[2].im)*(y[1].im-mid.im));
AveSum-=AveBuff[AveBuffPtr];
AveBuff[AveBuffPtr]=e;
AveSum+=AveBuff[AveBuffPtr];
AveBuffPtr++;AveBuffPtr%=AveBuff.size();
GardError=AveSum/AveBuff.size();
if(AveSum>0)GardShift=GARDSHIFT;
else GardShift=-GARDSHIFT;
//Optional to stop moterboating if buffersize is big
//for(int i=0;i<AveBuff.size();i++)AveBuff[i]-=GardShift;
//AveSum-=GardShift*AveBuff.size();
}
__fastcall MGardner::MGardner()
{
AveBuff.resize(32);
AveBuffPtr=0;
AveSum=0.0;
for(unsigned int i=0;i<AveBuff.size();i++)AveBuff[i]=0.0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?