Mercurial > hg > dmlib
comparison dmlerp.c @ 0:32250b436bca
Initial re-import.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 28 Sep 2012 01:54:23 +0300 |
parents | |
children | 72813cece1ba |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:32250b436bca |
---|---|
1 #include "dmlib.h" | |
2 | |
3 void dmLerpInit(DMLerpContext *ctx, DMFloat start, DMFloat end, DMFloat nsteps) | |
4 { | |
5 ctx->start = start; | |
6 ctx->end = end; | |
7 ctx->nsteps = nsteps; | |
8 } | |
9 | |
10 | |
11 DMFloat dmLerpSCurve(DMLerpContext *ctx, const DMFloat step) | |
12 { | |
13 const DMFloat n = step / ctx->nsteps; | |
14 const DMFloat v = DMM_S_CURVE(n); | |
15 return DMM_LERP(v, ctx->start, ctx->end); | |
16 } | |
17 | |
18 | |
19 DMFloat dmLerp1(DMLerpContext *ctx, const DMFloat step) | |
20 { | |
21 const DMFloat v = step / ctx->nsteps; | |
22 return DMM_LERP(v, ctx->start, ctx->end); | |
23 } | |
24 | |
25 | |
26 DMFloat dmCatmull_Rom(const DMFloat t, const DMFloat p0, const DMFloat p1, const DMFloat p2, const DMFloat p3) | |
27 { | |
28 const DMFloat q = t * t; | |
29 return ( | |
30 (2 * p1) + | |
31 (-p0 + p2) * t + | |
32 (2 * p0 - 5 * p1 + 4 * p2 - p3) * q + | |
33 ( -p0 + 3 * p1 - 3 * p2 + p3) * q * t | |
34 ) * 0.5f; | |
35 } |