int h0(int bitpos) { if (getbit(bitpos)) return h01(bitpos+1); else return h00(bitpos+1); }
Vec CardinalSpline::operator() (unsigned int n, float t) { assert(n < points.size()); assert(t >= 0 && t <= 1); return (points[n] * h00(t) + tangents[n] * h10(t) + points[n+1] * h01(t) + tangents[n+1] * h11(t)); }