Double4 getColor2(double dx, double dy) { double distance = (fabs(dx) + fabs(dy)) / 2.0; if (distance < 0) distance = 0; if (distance > 2.0) distance = 2.0; if (distance <= 1.0) { return lerp4(cl1, cl2, distance); } else { return lerp4(cl2, cl3, distance); } }
Double4 getColor(double dx, double dy) { double distance = (fabs(dx) + fabs(dy)) / 4.0; if (distance < 0) distance = 0; if (distance > 1.0) distance = 1.0; return lerp4(c1, c2, distance); }
static void get_rot(vec4 *res, const uint8_t *p, const uint8_t *qt, int anim_id, double frame) { uint8_t start, end; const keyframe4_t *k, *j; float t; start = (!anim_id) ? 0 : qt[anim_id - 1]; end = qt[anim_id]; k = (const keyframe4_t*)p; k += start; if(start == end) { *res = vec4(0.0, 0.0, 0.0, 1.0); return; } if(start + 1 == end || frame <= k->frame) { *res = k->vec; return; } while((++k)->frame < frame); j = k - 1; t = (float)(frame - j->frame) / (float)(k->frame - j->frame); *res = lerp4(j->vec, k->vec, t); }