Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/*
 * This file:
 *   http://anggtwu.net/MAXIMA/2025-1-lerps.mac.html
 *   http://anggtwu.net/MAXIMA/2025-1-lerps.mac
 *          (find-angg "MAXIMA/2025-1-lerps.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 *
 * (find-es "maxima" "mycase")
*/

lerp (A,B,t) := A + t*(B-A);
lerps(ts,Ps) := block([n,t,tests,results,ifargs],
    n        : length(Ps),
    tests    : makelist(t<ts[k], k,2,n),
    results  : makelist(lerp(Ps[k-1],Ps[k],(t-ts[k-1])/(ts[k]-ts[k-1])), k,2,n),
    tests[length(tests)] : true,
    ifargs   : apply('append, args(transpose(apply('matrix, [tests,results])))),
    funmake("if", ifargs)
  )$


/*
** (c3m251sgp 5 "traj-em-3-partes")
** (c3m251sga   "traj-em-3-partes")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-lerps.mac");
lerps([t1,t2,t3],    [Q1,Q2,Q3]);
lerps([t1,t2,t3,t4], [Q1,Q2,Q3,Q4]);

ts : [0,1,2,4];
Qs : [[1,1], [3,1], [4,2], [4,3]];
             lerps(ts,Qs);
define(P(t), lerps(ts,Qs));
P(0);


** (find-myqdraw "myqdraw3.mac")
load_myqdraw();

Pts : makelist(P(t), t, seqby(0,4,1));
Pts : makelist(P(t), t, seqby(0,4,1/2));
myqdraw(xyrange(), pts(Pts));

*/