示例#1
0
        public static void DoFilterBulgeAndСoncavity(this TableFunction tableFunction)
        {
            int    length              = tableFunction.CoefficientA.Length;
            double lastXStart          = tableFunction.X[0];
            Func <double, double> func = x =>
                                         (tableFunction.CoefficientD[0] * 6 * x + tableFunction.CoefficientC[0] * 2);
            BulgeAndСoncavity lastBulgeAndСoncavity = CheckBulgeAndСoncavity(tableFunction.Y[0]);

            if (lastBulgeAndСoncavity == BulgeAndСoncavity.inflection)
            {
                lastBulgeAndСoncavity = CheckBulgeAndСoncavity(tableFunction.X[0] +
                                                               (tableFunction.X[1] - tableFunction.X[0]) / cut);
            }
            BulgeAndСoncavity bulgeAndСoncavity = lastBulgeAndСoncavity;

            for (int i = 1; i < length; i++)
            {
                double delta = (tableFunction.X[i] - tableFunction.X[i - 1]) / cut;
                for (int j = i; j < 10; j++)
                {
                    bulgeAndСoncavity = CheckBulgeAndСoncavity(func(tableFunction.X[j - 1] + j * delta));
                    if (lastBulgeAndСoncavity == bulgeAndСoncavity)
                    {
                        continue;
                    }
                    else
                    {
                        tableFunction.cutsBulgeAndСoncavity.Add(new CutBugleAndConcavity(lastXStart,
                                                                                         tableFunction.X[j - 1] + j * delta / 2, lastBulgeAndСoncavity));
                        lastBulgeAndСoncavity = bulgeAndСoncavity;
                        lastXStart            = tableFunction.X[j - 1] + j * delta / 2;
                    }
                }
                func = x => (tableFunction.CoefficientD[i] * 6 * x + tableFunction.CoefficientC[i] * 2);
            }
            tableFunction.cutsBulgeAndСoncavity.Add(new CutBugleAndConcavity(lastXStart,
                                                                             tableFunction.X[length], lastBulgeAndСoncavity));
        }
示例#2
0
 public CutBugleAndConcavity(double xStart, double xEnd, BulgeAndСoncavity bulgeAndСoncavity)
 {
     this.xStart            = xStart;
     this.xEnd              = xEnd;
     this.bulgeAndСoncavity = bulgeAndСoncavity;
 }