42 return phi(d*.5,w)/(
swp*
swp)*phih(d*.5,w);
61 basis[0] = b4(dom, w);
62 basis[1] = b3(dom, w);
63 basis[2] = b2(dom, w);
64 basis[3] = b1(dom, w);
65 basis[4] = b0(dom, w);
70class Conic4:
public Toy {
84 void draw(
cairo_t *cr, std::ostringstream *notify,
int width,
int height,
bool save, std::ostringstream *timer_stream)
override {
85 std::vector<Geom::Point> e_h = psh.
pts;
86 for(
int i = 0; i < 5; i++) {
95 cairo_set_line_width (cr, 1);
101 for(
unsigned dim = 0; dim < 2; dim++)
102 for(
unsigned i = 0; i < 5; i++)
103 B[dim] += ab.basis[i]*e_h[i][dim];
107 cairo_set_line_width (cr, 1);
114int main(
int argc,
char **argv) {
115 init(argc, argv,
new Conic4());
Conversion between Bezier control points and SBasis curves.
Adaptor that creates 2D functions from 1D ones.
Function that interpolates linearly between two values.
Function defined as discrete pieces.
Two-dimensional point that doubles as a vector.
void push_back(double x, double y)
std::vector< Geom::Point > pts
vector< Handle * > handles
virtual void save(FILE *f)
virtual void draw(cairo_t *cr, std::ostringstream *notify, int w, int h, bool save, std::ostringstream *timing_stream)
Lifts one dimensional objects into 2D.
Various utility functions.
SBasisN< n > cos(LinearN< n > bo, int k)
Bezier reverse(const Bezier &a)
SBasisN< n > sin(LinearN< n > bo, int k)
void cairo_line_to(cairo_t *cr, Geom::Point p1)
void cairo_d2_pw_sb(cairo_t *cr, Geom::D2< Geom::Piecewise< Geom::SBasis > > const &p)
void cairo_move_to(cairo_t *cr, Geom::Point p1)
some std functions to work with (pw)s-basis
Polynomial in symmetric power basis (S-basis)
void cairo_set_source_rgba(cairo_t *cr, colour c)
void init(int argc, char **argv, Toy *t, int width=600, int height=600)