Parametric House
Parametric House Resource

Voronoi Basics

In this Tutorial, I will show you how you can use the Voronoi command in Grasshopper and how you can use it to produce the Voronoi cells. First we will talk about the random nature of voronoi cells and then we will use populate…

Duration14 min LevelIntermediate TypeTutorial / Lesson

About this resource

In this Tutorial, I will show you how you can use the Voronoi command in Grasshopper and how you can use it to produce the Voronoi cells. First we will talk about the random nature of voronoi cells and then we will use populate…

Duration : 14 minutes

In this Tutorial, I will be talking about the Voronoi command in Grasshopper 3d and how you can use it to produce the Voronoi cells with it.

Voronoi component with generated cells in Grasshopper

To start we can double click on the canvas and search for “vor”. The Voronoi tool will show up. Notice that there is a Voronoi 3D tool also. This tool will produce cells in 3d boxes and I will talk about it in another tutorial.

Grasshopper Voronoi component search and point and curve inputs

The next step is to give the Voroni tool a set of points. You can go to Params>Geometry and choose “point” and then right click on it and select multiple points to set them. After the point, you should give the Boundry a rectangle by using the curve tool (Params>geometry). I will explain why we need it!

Voronoi cells bounded by a rectangle in Rhino and Grasshopper

After connecting the point and the boundary we will have the cells. If you change the point’s location you will also see the cells change.

Editing Voronoi seed points in Rhino

The first tip about Voronoi is that the points should be randomly distributed. If you give a regular grid of points to the tool you will end up with rectangles!

Regular grid of points producing rectangular Voronoi cells

If I change the location of several points in the regualr grid, you can see the Voronoi cells emerge.

Moved grid points producing irregular Voronoi cells

The next tip is that it’s best to keep the points in a plane. If I move three points upwards you can see that the pattern doesn’t change.

Voronoi points moved out of plane while the cell pattern remains planar

The Next point about Voronoi is that we can give a number to the Radius and produce circles which collide with each other. By increasing the radius the circles will grow and produce straight lines in the intersection. That is because the force of each circle is the same!

Voronoi radius creating colliding circles

We need the boundary (and it should be planar + rectangular) to stop the circles growing to infinity. That is because the circles on the outermost part will continue to grow and will never produce straight lines! So the boundary assures that this happens!

Large Voronoi radius with outer cells constrained by a boundary

If you don’t give a boundary, Grasshopper will finally wrap up the circles in a square.

Voronoi cells wrapping within a square boundary

If you want to see the circles you can define a very big boundary outside the cells to reach and even if you increase the radius you will have circles on the outer part of the cells.

Voronoi circles displayed with a large boundary

You can also connect a Region Union (Intersect>Shape) to the output to unite the circles and then use Boundary (Surface>Free form) to make the cells visible.

Region Union and Boundary Surfaces applied to Voronoi circles

Another definition for the Voronoi cells is that if you connect the points to each other by triangles (Delaunay edges) you can then draw lines which will split the edges into half and also be perpendicular at the same time. These are the Voronoi cell’s edges.

Delaunay lines over Voronoi cells Perpendicular bisectors between Delaunay points and Voronoi edges

You can also change the plane for the Voronoi cells as below.

Voronoi cells generated on a custom plane

You can also draw a rectangular surface in rhino and then give it to the plane. Grasshopper will automatically give the plane of the surface to the cells. by moving and rotating the surface you can control the orientation of the cells.

Voronoi cells aligned to a rotated Rhino surface

Another technique for producing the Voronoi cell is using “Populate Geometry” (Vector>Grid). First, connect a surface to the rectangular boundary and then give it to the Geometry input. Populate geometry will produce randomly distributed point in the rectangle which you can later give to the the Voronoi tool.

Populate Geometry feeding random points into Voronoi
← Back to resources
×Voronoi component with generated cells in Grasshopper
Voronoi component with generated cells in Grasshopper
×Grasshopper Voronoi component search and point and curve inputs
Grasshopper Voronoi component search and point and curve inputs
×Voronoi cells bounded by a rectangle in Rhino and Grasshopper
Voronoi cells bounded by a rectangle in Rhino and Grasshopper
×Editing Voronoi seed points in Rhino
Editing Voronoi seed points in Rhino
×Regular grid of points producing rectangular Voronoi cells
Regular grid of points producing rectangular Voronoi cells
×Moved grid points producing irregular Voronoi cells
Moved grid points producing irregular Voronoi cells
×Voronoi points moved out of plane while the cell pattern remains planar
Voronoi points moved out of plane while the cell pattern remains planar
×Voronoi radius creating colliding circles
Voronoi radius creating colliding circles
×Large Voronoi radius with outer cells constrained by a boundary
Large Voronoi radius with outer cells constrained by a boundary
×Voronoi cells wrapping within a square boundary
Voronoi cells wrapping within a square boundary
×Voronoi circles displayed with a large boundary
Voronoi circles displayed with a large boundary
×Region Union and Boundary Surfaces applied to Voronoi circles
Region Union and Boundary Surfaces applied to Voronoi circles
×Delaunay lines over Voronoi cells
Delaunay lines over Voronoi cells
×Perpendicular bisectors between Delaunay points and Voronoi edges
Perpendicular bisectors between Delaunay points and Voronoi edges
×Voronoi cells generated on a custom plane
Voronoi cells generated on a custom plane
×Voronoi cells aligned to a rotated Rhino surface
Voronoi cells aligned to a rotated Rhino surface
×Populate Geometry feeding random points into Voronoi
Populate Geometry feeding random points into Voronoi