Пример #1
0
void DC_Derivative::FixedWindowCalc(DC_XYData&      outputXY)
{
    for (int i = 0; i < processedT.Size(); i++)
    {
        int stIndx = 0;
        if (i > windowPtsSpan)
            stIndx = i - windowPtsSpan;
        int endIndx = i + windowPtsSpan;
        if (endIndx > (processedT.Size() - 1))
            endIndx = processedT.Size() - 1;

        if (!WindowOK(i, stIndx, endIndx))
            continue;

        double dVal;
        if (!WindowCalc(i, stIndx, endIndx, dVal))
            return;

        savedT += processedT[i];
        outputXY.xData += actualT[i];
        outputXY.yData += dVal;
    }
}
Пример #2
0
int Window::ProcessMessageQueue()
{
	if( !WindowOK() )
	{
		Logger::LogFatal("Tried to process message queue for a erronous Window", (int)hWnd, DEBUGINFO);
		return Window::QUITMESSAGEPOSTED;
	}

	MSG msg;
	while( PeekMessage(&msg,0,0,0,PM_REMOVE) )
	{
		if( msg.message == WM_QUIT )
		{
			Logger::LogInformation("Quit message Posted");
			return Window::QUITMESSAGEPOSTED;
		}

		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return Window::CONTINUE;
}
Пример #3
0
void DC_Derivative::LogLinWindowCalc(DC_XYData&      outputXY)
{
    double minT, maxT;
    processedT.CalcMinMax(minT, maxT);
    double delT = maxT - minT;

    double tSpan;
    if ((derivativeCalcType == dctLogValWindow) || (derivativeCalcType == dctLinValWindow))
    {
        tSpan = windowValSpan;
        if (tSpan > delT / 2.0)
        {
            processErr.SetConstantError("actual span > delta T / 2");
            return;
        }
    }
    else
    {
        tSpan = delT * windowPctSpan / 200.0;
        if (tSpan < logEps)
        {
            processErr.SetConstantError("calculated span < log epsilon");
            return;
        }
    }

    for (int i = 0; i < processedT.Size(); i++)
    {

        double tempT = windowT[i];

        int j;
        int stIndx = i;
        int endIndx = i;

        for (j = i - 1; j >= 0; j--)
        {
            delT = fabs(windowT[j] - tempT);
            if (delT > tSpan)
                break;

            stIndx = j;
        }

        for (j = i + 1; j < processedT.Size(); j++)
        {
            delT = fabs(windowT[j] - tempT);
            if (delT > tSpan)
                break;

            endIndx = j;
        }

        if (!WindowOK(i, stIndx, endIndx))
            continue;

        double dVal;
        if (!WindowCalc(i, stIndx, endIndx, dVal))
            return;

        savedT += processedT[i];
        outputXY.xData += actualT[i];
        outputXY.yData += dVal;
    }
}