generative modeling for Rhino
Hi. I am trying to produce a randomly perforated board, the holes consists of 5 types radius only.
Here are some rules:
(1)Gap from hole to hole should be radius of the hole, if different scale then choose the smaller as it.
(2)The board perforated in precise percentage,like 31%.
(3)Holes around edges should be handle carefully like no too approach to edges, using radius of them as well.
I has been try on galapagos, hoopsnake. Different methods are welcome, it`s just need to hit the goal. What i do really care is the thinking process, and i can`t figure out a good way to solve this problem. If you have an idea please tell me and i will try to work out on it.
this would be relatively easy in 1D, but when you start perforating a sheet (2D) with points that are not on a grid, then the concept of neighbouring holes needs to be further explained.
If we allow all holes to move freely across the sheet (assuming we've pre-picked the radii for each one so that we've already met the 31% constraint and are not in danger of breaking it) and the rule is "the distance between the edges of any two holes can never be less than the radius of the smallest one" then we end up with a problem which has 2N axes of freedom (i.e. variables), where N represents the number of holes. This is then -at least in principle- solvable by something like Galapagos, though it would probably take a very long time if N is large.
I attached a highly simplified example of maximizing distances between points using Galapagos, I imagine Kangaroo can solve it much, much faster as it is a directed search if you define the problem as a node-spring system.
Once i tried your suggested method too, but it was little bit complicated when i try to modify those holes into only 5 precise scale. If R1 hole meet R2 hole, and assume that R1>R2, theoretically the min distance between them should be R2 (To ensure the fabrication fine). How if i just set that the min distance between holes are N (which is the smallest number in 5 types), and let galapagos to produce the most suitable result for me? It may be more sufficient.
And one more question after this, the holes overlapped on the edge after the galapagos process. How should i do? I was just thinking that offset the edge into itself, select those intersected circles and move them in oriented to the edge which they intersected.
And very thank you for your help, your sample is helpful i found some others function which i don`t use before. I hope i explain myself clearly :)
and attached highly simplified example is ...