Anti-Grain Geometry Tutorial
agg_bspline.h
1
//----------------------------------------------------------------------------
2
// Anti-Grain Geometry - Version 2.4
3
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
4
//
5
// Permission to copy, use, modify, sell and distribute this software
6
// is granted provided this copyright notice appears in all copies.
7
// This software is provided "as is" without express or implied
8
// warranty, and with no claim as to its suitability for any purpose.
9
//
10
//----------------------------------------------------------------------------
11
// Contact: mcseem@antigrain.com
12
// mcseemagg@yahoo.com
13
// http://www.antigrain.com
14
//----------------------------------------------------------------------------
15
//
16
// class bspline
17
//
18
//----------------------------------------------------------------------------
19
20
#ifndef AGG_BSPLINE_INCLUDED
21
#define AGG_BSPLINE_INCLUDED
22
23
#include "agg_array.h"
24
25
namespace
agg
26
{
27
//----------------------------------------------------------------bspline
28
// A very simple class of Bi-cubic Spline interpolation.
29
// First call init(num, x[], y[]) where num - number of source points,
30
// x, y - arrays of X and Y values respectively. Here Y must be a function
31
// of X. It means that all the X-coordinates must be arranged in the ascending
32
// order.
33
// Then call get(x) that calculates a value Y for the respective X.
34
// The class supports extrapolation, i.e. you can call get(x) where x is
35
// outside the given with init() X-range. Extrapolation is a simple linear
36
// function.
37
//
38
// See Implementation agg_bspline.cpp
39
//------------------------------------------------------------------------
40
class
bspline
41
{
42
public
:
43
bspline
();
44
bspline
(
int
num);
45
bspline
(
int
num,
const
double
* x,
const
double
* y);
46
47
void
init(
int
num);
48
void
add_point(
double
x,
double
y);
49
void
prepare();
50
51
void
init(
int
num,
const
double
* x,
const
double
* y);
52
53
double
get
(
double
x)
const
;
54
double
get_stateful(
double
x)
const
;
55
56
private
:
57
bspline
(
const
bspline
&);
58
const
bspline
& operator = (
const
bspline
&);
59
60
static
void
bsearch(
int
n,
const
double
*x,
double
x0,
int
*i);
61
double
extrapolation_left(
double
x)
const
;
62
double
extrapolation_right(
double
x)
const
;
63
double
interpolation(
double
x,
int
i)
const
;
64
65
int
m_max;
66
int
m_num;
67
double
* m_x;
68
double
* m_y;
69
pod_array<double>
m_am;
70
mutable
int
m_last_idx;
71
};
72
73
74
}
75
76
#endif
agg::bspline
Definition:
agg_bspline.h:40
agg::pod_array< double >
agg
Definition:
agg_arc.cpp:24
agg-2.4
include
agg_bspline.h
Generated by
1.8.13