I'd like to 'parent' Locators to one another, ideally organized in any arbitrary tree.
The simplest case: If I have two Locators, A and B, then moving A will move both together, but moving B will only move that one.
Any simple suggestions?
|
|
Not as fancy as belisarius' solution, but here's my approach. To store the tree, I'm using nested lists, so for example
would define a tree with root
To construct a list of edges from the tree you can do something like
Finally, we construct a list of
Usage Consider an arbitrary tree
Then you could do something like
|
|||
|
|
|
I would do it by introducing as a third variable the displacement between A and B, and then using
|
|||||
|
With an arbitrary locator dependency treeUpdated Now the sub-blocks move as one piece (per @RM request). Lets first generate a dependency tree and calculate a few values for future use:
Now the main dynamic code:
Chinese instruction manual:
|
||||
|
Here is a rather short example of a potential way of getting this functionality. Initially we need to decide on a structure for the tree. I'm going with simply a list of lists type tree, where the first element of each list is assumed to be it's head. Except at the very first level, where each node is considered a child.
Having this structure we can apply a function to each leaf by calling;
Then I define a new dynamic wrapper that will insert this updating function for any element having indexes ending in 1.
Then it's just a matter of mapping this wrapper over the tree and putting it into locators, note that I pass the index through an anonymous function in order for the pattern to match even though
|
||||
|
|