Grasshopper

algorithmic modeling for Rhino

First of all, I'm pretty new to grasshopper. This one's just an experiment that I might want to turn into something to build.

Basically, what I'm trying to do is sort of a reverse voronoi. The further I get away from point X, the smaller I want the cells to be. Just smaller, not denser. At least in theory, what I'm shooting for is cells that are roughly the same size, but still have the voronoi edges, so when I put many points close together, it doesn't change much, but instead of the cells getting bigger in the less point populated areas, I just want less cells that are the same size.

I think the image kind of explains it a little, but as you can see, it's just not practical, because I'm planning on using a lot more points in the end.

I'm just kind of stuck right now, because I can't really find a way to determine the distance of each polyline from my circle, or if it's inside the circle or not, and then split the tree into "inside the circle" and "outside the circle"

Any help is appreciated, because what I've got there is just an embarrassing mess…

Views: 971

Attachments:

Replies to This Discussion

I don't really understand what you're trying to do; the image doesn't really seem to correspond to your description and I haven't any idea what "smaller, not denser" cells would look like. Can you maybe upload a hand sketch or some other image that is closer to what you are trying to accomplish?

As Andrew, I don't really understand.

I made here a small definition that increases the distance of offset when points are far from other points, but I don't know if it is what you want.

Attachments:
Hi Sebastian,
I kinda understand what you're aiming at, but before I try anything I have a couple questions for you!
1- There is a sort of contradiction in your description : does it depend on distance from one or several center points (your "point X") or on local density in your point set (more difficult to achieve I think).
2- What exactly do you call "roughly the same size"? Is it in term of area, perimeter, bounding box dimension? And the term "roughly" is not a friend of programing...
Since you're a newcomer allow me to give you a small piece of advice.
It is crucial to have clear ideas when grasshoppering, as the architecture of your algorithm can be very different regarding to small details like these. As Andrew said, before doing anything you need to make some sketches and write some kind of pseudo code (look it up if you don't know what it is). Believe me you'll save hours if you stick to this method! And you'll get quicker response on the forum too.
Regards
Fred.

Thanks for your kind replies, Rhydro's modification is close, though I'm still trying to reproduce it, or understand what's being done. The points are processed and analysed completely separate from the voronoi, but in the end joined with the offset, yet match the corresponding voronoi cell… There's still a lot I have to figure out :P

I admit, it's badly explained, shouldn't have asked right after working on it, kind of failed to get to the point…

The distance is supposed to depend on the distance from one center point or area, meaning the further away my voronoi cell gets from point X, the higher the offset value.

I used "roughly the same size" because it's not the final cell size I want to change, but the offset value which eventually gives me the final cell. I know the offset value could probably be determined by the surface area of the offset cell, but I thought that would only overcomplicate it, because the exact size isn't important to me (though it seems like it should, or at least would make things easier if it were)

The basic idea is - if I set many points, denser in the middle and more spread out the further away they get from the center (doing that in processing eventually), or point X, and apply a voronoi on them, the cells get bigger where the points are further apart. I want them to be the same size as in the center though, or ideally, even smaller, so in the end, I get the shape of a voronoi cell, but not the look of a regular voronoi.

I tried to illustrate it in a little sketch, the arrows meaning that the offset cell is supposed to be smaller.

I thought about using the explode to give me a list of all the polylines the voronoi creates. After that, evaluate the distance to my set point X and based on that, modify the offset value of that single polyline.

Though I think I'm thinking too java like for that. The explode basically gives me an array of polylines, I'd send that entire array through a loop, first find its center, evaluate how far it's away from point X, divide the default offset by the distance, check if it's not smaller than A (as I noticed it messes up if the offset value is too small) and apply it to the polyline. I know it's different in grasshopper, I just have to find a way to express that. Kind of like with any language, programming or not.

rats, forgot the sketch…

Attachments:

By its very nature the size of a cell is proportional to the density of its neighbours. With this in mind I would approach it like this.

note I used the Scale component because the offset is just too unreliable.

Attachments:

I like your solution.

Why don't you use a Brep Component (Explode) component to extract the corners of your flat box, instead of "Brep Wireframe - Join Curves - Explode - Shift List" ? Is it less "safe", less reliable ?

:)

When I started I just had a rectangle drawn in Rhino. But because of the Internalising issues I thought I should post something that didn't rely on anything in the document. So all I was thinking at the time was create a curve.

After I posted I did look at it and think I should change it but I ran out of time.

Try this. White groups are possible choices.

Attachments:

RSS

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service