Divide curved surface into triangles with equal area


I’m trying to divide the attached curved mesh with a triangular grid. I want the divided triangular mesh surfaces to have equal areas. I’m new to grasshopper and I can’t think of a way to achieve this. Can someone please help me out? Thank you!

Surface Triangulation.3dm (1.4 MB)

1 Like

Your shape is probably not possible to divide with equal triangles (without the edge shape changing to at least some amount, or the curvature). How important is the boundary of the shape?

Not so important. I want to change it using straight polylines to connect between nodes of the grid on the edge anyways.

You should check out Mesh Machine, it is probably your best bet. https://www.grasshopper3d.com/profiles/blogs/meshmachine-update?id=2985220%3ABlogPost%3A1085830&page=2

Thank you Michael. I had a look at the link, but it seems that the size of the triangle divisions are all different. Is there a way to achieve same area triangles with Mesh Machine?

Hmmn, seems you haven’t read the description:

This adds the option to also scale the triangle size by distance from the boundaries:

boundary scaling is just an option.

Ok, I’ll give it a go. Thanks!

You can also add things like sphere collisions to vertices via kangaroo.

Sorry I’m still reading through all related posts of Mesh Machine. Don’t know what is sphere collisions just yet

Try to recreate a surface from the mesh and use Evolute tools, or you can use your approach but the triangles are not equals, or search how to create equal hexagons than use their centers to create triangles

tri.gh (9.5 KB)


Just so you know what you are trying to do is not going to be a simple out of the box solution (and probably wont be exact triangles ever - meaning there will be small differences within tolerance) It will require some physics based stuff like mesh machine and kangaroo plugins, or special tools like @seghierkhaled mentioned with evolute plugin. To be perfectly exact you could also try some iterative process like starting with one triangle and iteratively mirroring it (with something like anemone plugin), after each mirror you would rotate it around the mirror axis (previous triangles edge) and stop the rotation when it hits the surface, my guess is this will deviate the most from your original boundary though.

Hi, the easiest way is to squish your surface in rhino, and then map curves from 2d to 3d. In all ways triangles will not be equal since the surface is not part of sphere.

Hi Seghier,

Many thanks for your reply. I opened your file, but I can’t see the triangulation or the recreated surface. Any idea why it doesn’t work on my side? There was a message saying that I’m missing Mesh Dual when I opened your file. Could it be that?

Move your mesh to the center of the trigrid
And search for mesh dual i don’t know which plugin it is

tri_2.gh (40.6 KB)

Check this, if you want create a surface

tri_3.gh (48.0 KB)

This reminded me of the turtle shell :grinning:

Thank you so much Seghier! It does look very much like a turtle shell haha. I’ll definitely give it a go.

1 Like