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)); */