4
template <unsigned order>
5
inline Geom::Point Bez(double t, Geom::Point* b) {
6
Geom::Point child[order];
7
for(unsigned i = 0; i < order; i++)
8
child[i] = (1-t)*b[i] + t*b[i+1];
9
return Bez<order-1>(t, child);
13
inline Geom::Point Bez<0>(double t, Geom::Point* b) { return *b;}
18
int main(int argc, char** argv) {
19
Geom::Point a[] = {Geom::Point(1,0),Geom::Point(2,3),Geom::Point(2,5)};
20
Geom::Point p = Bez<1>(0.5, a);
22
printf("%g %g\n", p[0], p[1]);