Re: Growth algorithm making more possible

"Gerald de Jong" <[email protected]> Sat, 2 Dec 2006 10:47:15 +0100
Newsgroups gmane.comp.graphics.fluidiom
Message-ID <[email protected]>
On 12/1/06, Sven Heinz <[email protected]> wrote:
> Well lets begin with the main course the theoretics behind my algorithm idea(if your not in the mood just jump to the Practical part):

oh no, i love this stuff!

> Ok, imagine making a mental snapshot/copy of a Fluidon creature which already has a stable form, now adjust the lengthes to the current state
> (so that tension and pressure disappear) and increase the rigidty to maximum.
> >From this nice, colorless and rigid structure you choose one intervall,
> now imagine you cut this intervall in half and knot the ends together,
> basically you replace
> endpoint - line - endpoint
> with
> endpoint - line - midpoint - line- endpoint
> Now what exactly has happened/changed with your structure?

well, it has become unstable because the new thing can fold/collapse.

> Lets first look at the worst case of two possible:
>
> The two endpoints can change their distance, they have gained an additional
> degree of freedom, to move away or towards each other(on a bent line,or in the right coordinate system in a straight line).
> The midpoint has two degrees of freedom:
> First it can rotate around the connection axis of the two endpoins, this degree of freedom is independant,its not related to the two endpoints.
> Second it can change the radius it rotates around the axis, this degree
> of freedom is dependant and directly related to the movement of the two endpoints.(In the right coordinate system:the midpoint moves on a circular surface orthogonal to the connection line of the endpoints)

right.

> So what can we do to take away the degree of freedoms ,and define a stable
> structure?
> There are two choices:
>
> Choice one: First we elimate the degree of freedom of the endpoints, for this we must know, which points have stable distances relative to endpoint A and which have stable distances to endpoint B if we move the two endpoints away and towards each other.
> Once we know this(by doing a test run) we connect a point stable to A with a point stable to B, trough this we also eliminated one degree of freedom of the midpoint,the one related the endpoint.
> The midpoint now rotates in a circle with a constant radius, note
> that the freedom of a loose intervall(only connected) to one point is represented as spherical surface and this surface now has to cut the circle, they cutpoints are the stable formations that are created when we merge the midpoint with the loose intervalls endpoint.

complicated, but it think i still follow you.

> Choice two: We use two loose end intervalls (two spheres)originating from points stable to each other(so either both are Stable to A or both to B) to cut the circle surface created by the midpoint.
> The first sphere creates a cutline on which the mid point can move if midpoint merges with loose intervall endpoit, the second creates two or one cutpoint which are stable formations, as the degree of freedom of the endpoints was directly related to the degree of freedom of the midpoint. (note only at certain lengthes there is one instead of two two stable points, its when the two stable  points merge with each other)
> So why you might ask had the originating points of the loose intervalls be
> stable to each other? Well cause otherwise if the endpoints tried to move
> the orignating points could try to move with them(changing sphere position results in-->change of cut points) leading to a complicates movement pattern(although in some cases special conditions might prevent this, generally there should result a certain freedom of movement)

i wish you could write the code for this so that the explanation
doesn't have to be in so many words.  :)   i'm afraid i've lost you
here.  i'm trying.

> The better case:
> In the better case the endpoints can not move cause of other connections, in this case, the midpoint has only one degree of freedom, and we only need one additional conection from the mid point to another point to stabilize the system.

i have the code for something i called "tetrahedral mitosis" and it
does the following:

* bisect one interval, leaving a new joint at the midpoint and turning
one interval into two.
* connect the new joint with the two opposite joints with two new intervals

this turns one tetrahedron into two, immediately stabilizing the new joint.

i don't employ this code anymore but i liked it!

> Practical:
> Lets go back to our snapshooted rigid, tension- and pressureless structure,
> (Created by copying a stable fluidom structure and adjusting all original lengthes to the current ones)
> after we have choosen one connection we expand and shrink just this one
> and test if extensive stress is created(remember all is very rigid), if yes the better case has appeared if no the worst case appeared.

how do you define "extensive"?

> Additional we test, which points did not change distance in relation to ,which endpoint of the intervall, while we executed the expanding and shrinking.
> (the following is done to the building plan of the new child)
> Now replace the line with two lines to each other, basically a long line with a midpoint [endpoint-line-midpoint-line-endpoint].
> In the worst case connect the midpoint with one other point(originating point),then choose either to connect the midpoint with another point stable to the originating point of the first connection, or connect a point stable to one endpoint with a point stable to the other endpoint.
> In the better case connect the midpoint with an additional point.

things like "an additional point" have to be made explicit before this
is coded into an algorithm.

> Thats the whole method ,although you might still need some conditions where
> to place the midpoint, when you only want to choose certain stable point, or you might not want to much connections to far away points of your body,
> but this relies totally on your taste.

i can't yet see my way to coding what you suggest here, although i
really enjoy the way you are thinking about the structures by
adjusting lengths to eliminate stresses and then disturbing things a
little to see what happens.

what do you think of the tetrahedron mitosis idea?  that is already
coded.  i even had it set up to handle situations in which an interval
participates in multiple tetrahedrons by connecting the new midpoint
with every opposite joint in all relevant tetrahedrons.

these are really fun pieces of code to write because they ride on top
of a whole world of code and can be added and removed whenever you
want.  i code these things as "interval visitor" or "joint visitor"
objects which are invited to pass by all elements by calling
"admitVisitor(...)".

-- 
Gerald de Jong
[email protected]
http://www.darwinathome.org

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV