コード例 #1
0
        private static List <Point3D> GetPointsOfCriticalArea(DACEmulator emulator, DACEmulator.Delta minMaxDeltaParameter, DACEmulator.Delta changingDeltaParameter, double minMaxDeltaParameterStep = 1, double changingDeltaParameterStep = 1, double accuracy = 0.0001)
        {
            List <Point3D> area     = new List <Point3D>();
            double         deltaMin = TestingDelta(emulator.N, emulator.Coeff, minMaxDeltaParameter, -minMaxDeltaParameterStep, accuracy, emulator.DeltaCoeff,
                                                   emulator.DeltaIndex, emulator.DeltaSM, true).GetDeltaParameter(minMaxDeltaParameter);
            double deltaMax = TestingDelta(emulator.N, emulator.Coeff, minMaxDeltaParameter, minMaxDeltaParameterStep, accuracy, emulator.DeltaCoeff,
                                           emulator.DeltaIndex, emulator.DeltaSM, true).GetDeltaParameter(minMaxDeltaParameter);

            double step = (deltaMax - deltaMin) / (minMaxDeltaParameterStep - 1);
            double i    = deltaMin;

            for (int j = 0; j < minMaxDeltaParameterStep; j++)
            {
                emulator.SetDeltaParameter(minMaxDeltaParameter, i);
                double deltaStepWithAccuracy = changingDeltaParameterStep;
                while (Math.Abs(deltaStepWithAccuracy) * 2 > accuracy)
                {
                    bool needCorrecting = false;
                    while (ErrorChecking(emulator))
                    {
                        emulator.AddDeltaParameter(changingDeltaParameter, deltaStepWithAccuracy);
                        needCorrecting = true;
                    }
                    if (needCorrecting)
                    {
                        emulator.AddDeltaParameter(changingDeltaParameter, -deltaStepWithAccuracy);
                    }
                    deltaStepWithAccuracy /= 2;
                }
                area.Add(new Point3D((float)emulator.GetDeltaParameter(DACEmulator.Delta.Coeff), (float)emulator.GetDeltaParameter(DACEmulator.Delta.SM), (float)emulator.GetDeltaParameter(DACEmulator.Delta.Index)));
                emulator.SetDeltaParameter(changingDeltaParameter, 0);
                i += step;
            }
            return(area);
        }
コード例 #2
0
        private static List <Point3D> GetPointsOfCriticalArea(DACEmulator emulator, DACEmulator.Delta minMaxDeltaParameter, DACEmulator.Delta changingDeltaParameter, double minMaxDeltaParameterStep = 1, double changingDeltaParameterStep = 1)
        {
            double         accuracy = 0.0001;
            List <Point3D> area     = new List <Point3D>();
            double         deltaMin = TestingDelta(emulator.N, emulator.Coeff, minMaxDeltaParameter, -minMaxDeltaParameterStep, accuracy, emulator.DeltaCoeff, emulator.DeltaIndex, emulator.DeltaSM).GetDeltaParameter(minMaxDeltaParameter);
            double         deltaMax = TestingDelta(emulator.N, emulator.Coeff, minMaxDeltaParameter, minMaxDeltaParameterStep, accuracy, emulator.DeltaCoeff, emulator.DeltaIndex, emulator.DeltaSM).GetDeltaParameter(minMaxDeltaParameter);

            minMaxDeltaParameterStep = (deltaMax - deltaMin) / minMaxDeltaParameterStep;
            for (double i = deltaMin; i <= deltaMax; i += minMaxDeltaParameterStep)
            {
                emulator.SetDeltaParameter(minMaxDeltaParameter, i);
                while (ErrorChecking(emulator))
                {
                    emulator.AddDeltaParameter(changingDeltaParameter, changingDeltaParameterStep);
                }
                area.Add(new Point3D((float)emulator.GetDeltaParameter(DACEmulator.Delta.Coeff), (float)emulator.GetDeltaParameter(DACEmulator.Delta.SM), (float)emulator.GetDeltaParameter(DACEmulator.Delta.Index)));
                emulator.SetDeltaParameter(changingDeltaParameter, 0);
            }
            return(area);
        }