Grasshopper

algorithmic modeling for Rhino

# 3D voronoi structure(3D-semi-orthogonal voronoi structure)

Hello!

I'm trying to make a 3D-semi-orthogonal voronoi structure but can't seem to find a way. I can make a simple 3D-voronoi structure. Does anyone know how to do this? all ideas are welcome.

Views: 312

### Replies to This Discussion

https://naeimdesigntechnologies.wordpress.com/2017/01/29/3d-voronoi...

I made a custom tool to build 3D Voronoi, it might be useful as a start point

I have a quite similar thingy (Note: C# code only).

The only tricky part is to ensure that you have no intersection events between the prox pairs (either in 2d [likely] or 3d [most unlikely]).

This is bad in the sense that there's some pairs NOT yielding neighbor -| "cells" (see pair intersection events).

These are good since are intersection free meaning that ALL pairs yield neighbor cells that have at least one edge vertical or horizontal (but has this any real-life meaning? he he):

And these are also a clean run on 3d (but pair intersections in 3d are rather extremely unlikely):

The above are sampled in a DataTree of "paired cells" (based on connectivity data) meaning that you can create "doors"/openings between the cells/walls/whatever and put rats inside (avoid at any cost putting humans unless they are lobotomized).

Almost Solved

Press according to order

number of cells Then toggle 1

then toggle 2

Attachments:

I'll give you some hints  in order to achieve always a pair that has shared a vertical/horizontal BrepFace.

1. Create a 3d grid and randomly eliminate points. On each point make a box (with offset each other etc etc). Then randomly do the yellow lines (in X or in XY or in XYZ). Do not bother if the segments have equal lengths. Get the pairs of points (at end/start). Compute the big box (white).

2. With "help" boxes off this is the situation:

3. Do a Voronoi using the pair of points as above and the big box:

See that "equal" length lines means nothing with regard the "random" appearance of the cells.

If the deployment of the boxes (as in 1) is "flat" (meaning: no stacks in Z) then we have just a juicy Voronoi rectangular pepperoni pizza.

best

Hello,Naeim!

`Thank you for answering my question!`

I have just started studying, so I can not understand the details. However, I will refer to the program you attached.

Thank you!

2 steps

first step is to organise points (cells ) in pairs, then check if the angle between them is close to orthogonality(0,90,180,270) within 20 degrees deviation, if so, then the point location is adjusted (once for each pair) so it become right angle.  If not, then the connection left as its (diagonal). That happens only once(chosen logic) for each pairs.

second step: is to trim the spheres to build the voronoi.

Still under development

but I guess it works fine

The only tricky bit is some sort of control that yields "equalized" cells (within the limits of possible)

Hello,Peter!

`Thank you for answering my question!`

I have just started studying, so I can not understand the details.

`Could you give me a program if you like?`

Hi Tomohiro

Well ... get the C# (actually 2: step 1 and 2) ... but if you are not familiar with coding matters this wouldn't be helpful to you (at all). Why? because it's a "black box" and you can't do anything to improve it or to add new feature/capabilities etc etc.

In any case:

1. Whilst the 2nd C# is disabled (that does the Voronoi thingies) try to understand the logic: why the (help) boxes are used and what the variables present do. If you can't do that ... the Cell creation would remain a mystery to you.

2. Before going to step 2 ask any question related with step 1.

But if you are after some sort of housing/tower/etc using "similar" cells ... well that's another animal, it's rather complex and requires several lines of code more.

Attachments:

by Lucas

• View All