view 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
line wrap: on
line source

#include "dmlib.h"

void dmLerpInit(DMLerpContext *ctx, DMFloat start, DMFloat end, DMFloat nsteps)
{
    ctx->start = start;
    ctx->end = end;
    ctx->nsteps = nsteps;
}


DMFloat dmLerpSCurve(DMLerpContext *ctx, const DMFloat step)
{
    const DMFloat n = step / ctx->nsteps;
    const DMFloat v = DMM_S_CURVE(n);
    return DMM_LERP(v, ctx->start, ctx->end);
}


DMFloat dmLerp1(DMLerpContext *ctx, const DMFloat step)
{
    const DMFloat v = step / ctx->nsteps;
    return DMM_LERP(v, ctx->start, ctx->end);
}


DMFloat dmCatmull_Rom(const DMFloat t, const DMFloat p0, const DMFloat p1, const DMFloat p2, const DMFloat p3)
{
    const DMFloat q = t * t;
    return (
        (2 * p1) +
        (-p0 + p2) * t +
        (2 * p0 - 5 * p1 + 4 * p2 - p3) * q +
        (   -p0 + 3 * p1 - 3 * p2 + p3) * q * t
        ) * 0.5f;
}