On Thu, 17 Jun 2010, João Pais wrote:

yes, but since my math skills aren't much better than basic, all those equations and polynomials mean nothing to me. unless I get a clear equation (like the cubic one I used, which I found in another site), I can't go any further. if anyone wants to translate those funny drawings for me into something comprehensible, I'll put it in the patch.

Then this means I'd have to give you one formula per order, or what ?

The general formula goes like this : time goes from 0 to 1. to figure out the position for a time we call "t", you do this for each point numbered "i", you multiply the point by t, i times, and you multiply the point by (1-t), n-i times. It gives a pattern like :

  [expr pow(1-$f1,3)*pow($f1,0)*$f2 +
        pow(1-$f1,2)*pow($f1,1)*$f3 +
        pow(1-$f1,1)*pow($f1,2)*$f4 +
        pow(1-$f1,0)*pow($f1,3)*$f5]

I put the pow(,1) and pow(,0) in the formula just to make the pattern obvious... pow($f1,1) = $f1 and pow($f1,0) = 1, so, they'd be skipped in a "real" formula.

So, to adapt to 5 points, you'd add a $f6, the exponents in the first column would be 4,3,2,1,0, and in the second column they'd be 0,1,2,3,4. You can see that you can add any number of points like that.

It's more difficult, though, to make a patch that supports all possible orders at once. One way you can do it is with a [until] or [list split] or [list-drip], to compute the formula for one point at a time, and a [f] [+] combination to add the results together, for example. All this because you can't make a single [expr] that supports any number of points.

my purpose of doing this is basically to "modulate" a [line] (0-1), that is, with one direction. I never worked with higher than cubic curves (coreldraw etc are cubic), but since the purpose is to have a line that follows only one direction, would it become that unpredictable?

CorelDraw curves do the same thing in two dimensions by doing the same formula twice, once for the x, once for the y. Everything funny that you can do with those curves in 2 dimensions has a reason that comes from the 1-dimensional case. If you setup your points to bounce back and forth in a big-order Bézier, you will get an overly jumpy curve. Here's an extreme example :

  
http://demonstrations.wolfram.com/RungesPhenomenon/HTMLImages/index.en/popup_3.jpg

this example is a Lagrange curve instead of a Bézier curve, but the jumpiness is a problem with all methods (some more sensitive than others).

So, usually, when they have more than four dots, people chain together
pieces made from three or four dots each.
I know. that's another thing I have to look at in the future, but don't have a) the time and concentration b) the necessity for it. although it would be better, because then the patch would be "complete".

If I wanted a [vline] that did Bézier, I'd expect it to be chaining together pieces of Bézier that use three or four points at a time. Sort of like the difference between [tabread] and [tabread4], but with a better formula than [tabread4].

 _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard, Montréal, Québec. téléphone: +1.514.383.3801
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to