Point hermite(const double t, const Point& p0, const Point& m0, const Point& p1, const Point& m1) { return add( add(multScalar(hermiteBasis00(t), p0), multScalar(hermiteBasis10(t), m0)), add(multScalar(hermiteBasis01(t), p1), multScalar(hermiteBasis11(t), m1))); }
/* Three point diff */ struct pt *midpointDiff(const struct pt *a, const struct pt *b, const struct pt *c) { // Define the offset to use const double offset = ((double) 3) / 2; // Since this equation is rather large, we are splitting it up into smaller components // Define the first and second term struct pt *term1 = multScalar(offset, minusPt(c, b)); struct pt *term2 = multScalar(offset, minusPt(b, a)); // Define the result value return add(term1, term2); }
struct pt *hermite(const double t, const struct pt *p0, const struct pt *m0, const struct pt *p1, const struct pt *m1) { return add(add(multScalar(hermiteBasis00(t), p0), multScalar(hermiteBasis10(t), m0)), add(multScalar(hermiteBasis01(t), p1), multScalar(hermiteBasis11(t), m1))); }
/* One sided diff */ struct pt *forwardDiff(const struct pt *a, const struct pt *b) { struct pt *tmp = minusPt(b, a); return multScalar(3, tmp); }
/* One sided diff */ Point forwardDiff(const Point& a, const Point& b) { Point tmp = minusPoint(b, a); return multScalar(3, tmp); }