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); }
public ICurveApproximation LoadFrom(Point3D[] curve, ExtrapolationMode mode = ExtrapolationMode.Mirror) { return(new CurveBlurFilter(curve, mode)); }
public CurveBlurFilter(IEnumerable <Point3D> curve, BlurFunctionHandler filter, ExtrapolationMode mode = ExtrapolationMode.Mirror) { _blurCompiler = new BlurCompiler(filter); _linearCompiler = new CurveInterpolationCompiler(curve, mode); }
public CurveBlurFilter2(Point3D[] curve, BlurCompiler filter, ExtrapolationMode mode = ExtrapolationMode.Mirror) { _blurCompiler = filter; _linearCompiler = new CurveInterpolationCompiler(curve, mode); BuildCorners(); }
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); }