/* and a single variable (u) which is generally between 0 and 1 */ POINT_3D Bernstein(float u, POINT_3D *p) { POINT_3D a, b, c, d, r; a = pointTimes(pow(u,3), p[0]); b = pointTimes(3*pow(u,2)*(1-u), p[1]); c = pointTimes(3*u*pow((1-u),2), p[2]); d = pointTimes(pow((1-u),3), p[3]); r = pointAdd(pointAdd(a, b), pointAdd(c, d)); return r; }
point widgetAbsolutePosition(const widget *self) { // Get our own offset point pos = self->offset; // Add to this our parents offset if (self->parent != NULL) { pos = pointAdd(pos, widgetAbsolutePosition(self->parent)); } return pos; }