"Morphing/Warping" of two lists
Posted: Thu Aug 26, 2010 5:14 pm
Hi everyone
I'm an almost total newbie to lisp, so please be indulgent...
I'd like to write a code to make a kind of supervised morphing between 2 lists.
Something that's not too far from image morphing, but in one-dimension.
For instance :
-from a list A...
(0.0 0.1 0.1 0.0 1.0 1.0 1.0 0.4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0)
-> labelling it with any number of points or groups of points as key-features / leaving some datas "neutral"
((0.0) (0.1 x) (0.1 x) (0.0) (1.0 y) (1.0 y) (1.0 y) (0.4 y) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0))

-...to a list B
(0.0 0.0 0.0 0.0 0.5 0.5 0.5 0.1 0.0 0.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0)
-> same as before, with key features equivalent to the ones of list A
((0.0) (0.0) (0.0) (0.0) (0.5 x) (0.5 x) (0.5 x) (0.1 x) (0.0) (0.0) (0.0) (1.0 y) (1.0 y) (1.0 y) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0))

-> my goal would be to obtain an arbitrary number of intermediate lists, progressively turning list A
into list B, according to the key-features determined. The "neutral" parts would be transformed like
in a standard linear interpolation.
Here's a example source I found online about morphing :
http://www.hammerhead.com/thad/morph.html
I would probably manage to program the different parts of the code, mostly
using iterate I think, but I really need help to decipher the formulas.
I'm a musician, not a programmer and my math knowledge is worst than everything.
I came to lisp more through the logical part than the mathematical part, so
I have big difficulties to understand the procedures and, above all, to reformulate
them in one dimension...
Anybody has an idea?
Thank you very much in advance
J.
I'm an almost total newbie to lisp, so please be indulgent...
I'd like to write a code to make a kind of supervised morphing between 2 lists.
Something that's not too far from image morphing, but in one-dimension.
For instance :
-from a list A...
(0.0 0.1 0.1 0.0 1.0 1.0 1.0 0.4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0)
-> labelling it with any number of points or groups of points as key-features / leaving some datas "neutral"
((0.0) (0.1 x) (0.1 x) (0.0) (1.0 y) (1.0 y) (1.0 y) (0.4 y) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0))

-...to a list B
(0.0 0.0 0.0 0.0 0.5 0.5 0.5 0.1 0.0 0.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0)
-> same as before, with key features equivalent to the ones of list A
((0.0) (0.0) (0.0) (0.0) (0.5 x) (0.5 x) (0.5 x) (0.1 x) (0.0) (0.0) (0.0) (1.0 y) (1.0 y) (1.0 y) (0.0) (0.0) (0.0) (0.0) (0.0) (0.0))

-> my goal would be to obtain an arbitrary number of intermediate lists, progressively turning list A
into list B, according to the key-features determined. The "neutral" parts would be transformed like
in a standard linear interpolation.
Here's a example source I found online about morphing :
http://www.hammerhead.com/thad/morph.html
I would probably manage to program the different parts of the code, mostly
using iterate I think, but I really need help to decipher the formulas.
I'm a musician, not a programmer and my math knowledge is worst than everything.
I came to lisp more through the logical part than the mathematical part, so
I have big difficulties to understand the procedures and, above all, to reformulate
them in one dimension...
Anybody has an idea?
Thank you very much in advance
J.