agg_bspline.h

来自「这是VCF框架的代码」· C头文件 代码 · 共 78 行

H
78
字号
//----------------------------------------------------------------------------// Anti-Grain Geometry - Version 2.4// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)//// Permission to copy, use, modify, sell and distribute this software // is granted provided this copyright notice appears in all copies. // This software is provided "as is" without express or implied// warranty, and with no claim as to its suitability for any purpose.////----------------------------------------------------------------------------// Contact: mcseem@antigrain.com//          mcseemagg@yahoo.com//          http://www.antigrain.com//----------------------------------------------------------------------------//// class bspline////----------------------------------------------------------------------------#ifndef AGG_BSPLINE_INCLUDED#define AGG_BSPLINE_INCLUDED#include "agg_basics.h"namespace agg{    //----------------------------------------------------------------bspline    // A very simple class of Bi-cubic Spline interpolation.    // First call init(num, x[], y[]) where num - number of source points,     // x, y - arrays of X and Y values respectively. Here Y must be a function     // of X. It means that all the X-coordinates must be arranged in the ascending    // order.     // Then call get(x) that calculates a value Y for the respective X.     // The class supports extrapolation, i.e. you can call get(x) where x is    // outside the given with init() X-range. Extrapolation is a simple linear     // function.    //    //  See Implementation agg_bspline.cpp    //------------------------------------------------------------------------    class bspline     {    public:        ~bspline();        bspline();        bspline(int num);        bspline(int num, const double* x, const double* y);        void   init(int num);        void   add_point(double x, double y);        void   prepare();        void   init(int num, const double* x, const double* y);        double get(double x) const;        double get_stateful(double x) const;        private:        bspline(const bspline&);        const bspline& operator = (const bspline&);        static void bsearch(int n, const double *x, double x0, int *i);        double extrapolation_left(double x) const;        double extrapolation_right(double x) const;        double interpolation(double x, int i) const;        int     m_max;        int     m_num;        double* m_x;        double* m_y;        double* m_am;        mutable int m_last_idx;    };}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?