Sheep passing *near* other sheep? [An idea for a new sheep-generating algorithim]

Right now, as far as I can tell, all loop sheep are just some simple, repeated transformation on a flame. (rotating reference triangle?) While in some cases they're really beautiful, in other flames it makes them seem slightly more boring, and sometimes bring out what I find to be the least attractive part of a flame.

Since each flame is basically just a point in parameter space, wouldn't it be possible to do more interesting things? For instance, you could take three flames, with one as the "base" flame, and draw a third order bezier curve, with those flames' location in parameter space as control points. It would briefly take on qualities of other flames, but most likely not long enough, or to a great enough extent, for it to be recognizable. If it was recognizable and "ruined the effect", a quartic or quintic bezier curve, with four or five flames, would work as well - probably creating a sheep quite unlike any of the other edges or loops individually. The other option, to reduce recognizable qualities of other flames, would be simply to increase the weights on the start-point/end-point sheep.

The same could apply to edge sheep. Why just take a simple transformation between two flames? Take your start flame, your end flame, but take a third one and use it as a middle control point, and draw a quadratic bezier curve through it. Again, if it ruins the effect, add more flames in between, or increase the weighting on the start/end sheep.

Of course, through out this post I have been talking about bezier curves. It would also be possible, and perhaps a small bit more efficient, to draw a parabola or cubic/quartic/quintic function through the points. Rather than increasing the weight on the end points, one could (A.) draw the parabola, (B.) draw a simple line connecting the two points, (C.) average the two together at each corresponding time point t. This would also create a "flatter" or "straighter" curve throughout parameter space.

I think these ideas could bring a whole new element to sheep; I look forward to all comments/criticism. :-D

you are right we are only

you are right we are only scratching the surface of how sheep move.  the plan is to introduce motion tags that will vastly expand this (see FLAM3 2.8).  i've considered the "path" option you describe, but i believe it's too low-level a representation, which means it would not evolve well.

?

Err, sorry, I don't know to much about the whole Flam3 code/rendering thing, or where I can get info... could you provide me with a link?

In the meantime, here's another idea: you take all the "coefs" variables, do some continuous (but somwhat fluctuating) function on them, to produce a vector, pointing out into parameter space. The other, "end", sheep does this as well, to produce another vector. Now you have four points in parameter space; interpolate them with some curve.

This might be a more "high-level" representation, it still uses only two sheep, and I think it would act in a "genetic" fashion, because it's all based, only somewhat sensitively, on the other parameters in the sheep. The only problem I can see with this is there not being enough parameters; perhaps it could also use the weights of the transforms, some accretion functions on the values of the variations, and finally restrict the vector to only 20 or 30 dimensions (i.e., the "vectored" point would have the same values; only the coefs and weights would be different).

you can get version 2.8

you can get version 2.8 source here:  http://flam3.svn.sourceforge.net/viewvc/flam3/branches/early-clip/

probably the best way to access it is via the GUI FR0ST: http://fr0st.wordpress.com/

alas i don't think the motion tags are documented yet anywhere... maybe you could talk to erik and write something up.

windows binaries of: FLAM3

windows binaries of: FLAM3 v2.8 beta.


User login