Actually, this is a civil engineering question. I will simplify. I have been asking this to ChatGPT for last couple of days, but he doesn’t understand me, let’s see if actual humans will understand or not.
Imagine we have a circular surface, with radius equal r. Let’s assume it has a uniform weight.
I want to place n columns to this surface. And I want all columns to get exactly same load from the uniform weight of the surface.
Basicly, I want to split the circular surface into n equal areas and find the geometric center of these areas.
On the other hand this C# works 100% (a Recursive Bouncy Solver that splits a BrepFace according a predefined List of Areas (random or not) on a per “stripe” pieces Area sum basis. That said this is written for entirely different purposes.
… the only mod MIA is to define the next split direction … er , randomly. This could yield straight cuts … kinda like a Recursive BrepFace Rnd split (with no Area concerns) … but so what? (plus I hate Voronoi like my sins).
Good news: did some mods (still WIP mind) related with rnd Split direction and the thing did the trick.
Shown a circle for clarity - last piece [the Red: double the target Area size] not done/splitted for testing some Recursive stuff under investigation [i.e. Split phases for more “homogenous” BrepFaces].
Using a classic bouncy solver as the other cases posted above.
Not that hard … but certainly tricky: bounce solvers are nasty animals.
Imagine a Method that starts from some value - that is implicitly extracted on the fly - and a resolution step … targeting some value (the piece target area). Then it loops (grow while is smaller or srink while is bigger). Each time that a grow/srink switch happens the current step is half the previous. The search stops if the target is “near enough” according some areaTol reasonable value.