private void Compile(Point3D[] curve, ExtrapolationMode mode = ExtrapolationMode.Mirror)
        {
            _mode   = mode;
            _points = curve;

            //Если функция замкнутая соединяем первую и последние точки
            if (mode == ExtrapolationMode.Closed)
            {
                var points = new Point3D[_points.Length + 1];
                _points.CopyTo(points, 0);
                points[_points.Length] = points[0];
                _points = points;
            }


            //Заполняем массив расстояний
            _distance    = new double[_points.Length];
            _distance[0] = 0;
            for (var i = 1; i < _distance.Length; i++)
            {
                _distance[i] = _distance[i - 1] + _points[i].Distance(_points[i - 1]);
            }

            //Заполняем вспомогательные поля
            _buildDMax = _distance[_distance.Length - 1];

            if (_buildDMax.Equals(0D))
            {
                throw new Exception("Кривая должна иметь хотя-бы две уникальные точки");
            }

            _buildFBeg = _points[0];
            _buildFEnd = _points[_points.Length - 1];
            _buildDiff = _buildFEnd - _buildFBeg;
        }
        private void Compile(PointD[] points, ExtrapolationMode mode)
        {
            _points = points;
            _mode   = mode;

            _buildDMax = points[points.Length - 1].X;
            _buildFBeg = points[0].Y;
            _buildFEnd = points[points.Length - 1].Y;
            _buildDiff = _buildFEnd - _buildFBeg;
        }
 public InterpolationCompiler(PointD[] points, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     Compile(points, mode);
 }
Exemple #4
0
 public ICurveApproximation LoadFrom(Point3D[] curve, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     return(new CurveBlurFilter(curve, mode));
 }
Exemple #5
0
 public CurveBlurFilter(IEnumerable <Point3D> curve, BlurFunctionHandler filter, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     _blurCompiler   = new BlurCompiler(filter);
     _linearCompiler = new CurveInterpolationCompiler(curve, mode);
 }
Exemple #6
0
 public CurveBlurFilter2(Point3D[] curve, BlurCompiler filter, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     _blurCompiler   = filter;
     _linearCompiler = new CurveInterpolationCompiler(curve, mode);
     BuildCorners();
 }
Exemple #7
0
 public ICurveApproximation LoadFrom(Point3D[] curve, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     throw new NotImplementedException();
 }
 public CurveInterpolationCompiler(IEnumerable <Point3D> curve, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     Compile(curve.ToArray(), mode);
 }
 public CurveInterpolationCompiler(Point3D[] curve, ExtrapolationMode mode = ExtrapolationMode.Mirror)
 {
     Compile(curve, mode);
 }