Grasshopper

algorithmic modeling for Rhino

# Random Point with distance

I must to create a voronoi with the same condition of this article! i must to create n point in a square area, but the n point are chosen only if the distance are minor od DELTA! if it isn't right i want to create another point. I must can change too the distance, that is a fraction of do, obteined by the formula! There is a way to do this? i don't know if i can do this with random point, circle packing, or a script! Can anyone help me? thx

Views: 3033

### Replies to This Discussion

Would successive relaxations get you there?

--

David Rutten

david@mcneel.com

Attachments:

Hi David.... thx for reply... i know this! It's the same to work with HoopSnoke, and i use this for other question! It's a LLoyd's diagram, that take the centroids of voronoi. But in this way i can't control the diagram. I must define this parameter ALFA, which allow me to select a point, for control the regularity of voronoi diagram! I don't know if i explaine well!

In the file that i upload you can see this espression, and i want to select a n point, where i can change n, but any point must have a minimum distance DELTA between each other.

You can see in the image what the article mean: if i put n point with tistance d0, the inscribed circle in a regular exagon don't intersect any other. If i put a random point, i can accept only the point that have delta distance from each other, otherwise the circle with center in the point and radius delta intersect any other circle.

I don't know if it's possible to do this!

Attachments:

Do you want to select n points out of a cloud of N, that have this minimum distance or dou you want to create a cloud ouf n points that meet the criterion?

Both will, to some degree, require an iteration. Say you have three points, for the two closest ones you will get one distance and still need to decide which one to remove. Depending on which you chose, the resulting distances will vary. So for a lot of points, this will come down to alot of choices and a lot of trial'n'error.

If you want to distribute a given number of points, you may come to a state, where you need to move some of the already existing points in order not to violate the minimum distance.

Even if you don't care about the number of points left and just want no points colser than the given minimum, you could calculate the minimum distance of each point to its cell boundaries and cull those. But then you would remove both points corresponding to that distance, where you would probably need to remove only one...

I want to create n point that meet the criterion. When an item does not meet the criteria will have to create another until every point does not meet the criterion. I want to determine the number of points and the minimum distance that must have one another.

You think it's impossible to do this in grasshopper? i think that this is made with MATLAB. It's impossible to do this neither any VBscript.

I'm desperate, because this work is essential for my master thesis. I can't do nothing?

Doing that in GH natively, is probably overkill. GH isn't designed for iterations and hoopsnake may have it's limits... If you already have a Matlab script, you may be able to transfer that to VB, Python or C#, or write your own script from the algorithm.

Perhaps I misunderstood but this is easy to make with Kangaroo:

Attachments:

Hello Systemiq,

I do not think you got it wrong. I think you understand exactly what I meant, and I would be really grateful if you would explain a little better what you did. I believe that the attached file is missing a part that you see in the image instead... where is the alfa parameter? The second thing that is not clear to me how it works the component Spring Line from Kangaroo: What is the value of Reset Length and Upper Cutoff?
Anyway thank you so ..... I am very grateful to for post this work, and because you have reopened the hopes in me for my thesis. You'll devote a page in the acknowledgments.....!!

Ah yeah, I added the alpha calculus from the paper (delta/d0).

Here is how it should look like:

It computes the distance to the closest point, for all points, and keeps lowest value.

Springs from Line creates constraints between pairs of points, if you provide a pair (= a line) with Rest Length  = D, that means Kangaroo will try to keep the points exactly D units away.

If Upper cutoff is set to D, that means points won't be able to be closer than D, but can be farther (its like a repulsion sphere of radius D around points).

Also, I am not sure this alpha measure is very good, you can have a very regular Voronoi with just 2 points close together. Using the variance or standard deviation of  [distance of closest point] would be better.

Attachments:

• View All