algorithmic modeling for Rhino
Tags:
Unless your surface is developable, it is a mathematical impossibility to tile it with only flat equilateral triangles, all meeting exactly, with 6 around a vertex. Sorry.
As you say, 6 equilateral triangles around a vertex make an angle of 360°, but the variation or defect from this angle is exactly what enables a polyhedral surface to form a discrete version of double curvature.
In fact there is a precise relationship between the Gaussian curvature of a smooth surface, and the angle defects of its polyhedral version - the curvature can be regarded as concentrated at the vertices. As you refine the division into more and more smaller faces, getting closer to smoothness, the angle defects at each of the vertices get smaller, but their total remains the same. So as long as you have a finite number of triangles, they can get closer to all being equilateral, with 360° around each vertex, but never quite get there.
For example, in the case of a closed surface without handles, the angle defects will always sum to 720° (this is Descartes' theorem, and the Gauss-Bonnet theorem generalizes this to a relationship between the integral of Gaussian curvature and the topology of a surface).
A regular icosahedron is a special case, where the angle defect is divided into whole multiples of 60° - so one triangle short of a full circle at each of the 12 vertices - but for most numbers of faces there will be no such neat division.
This being said, if you accept that what you want will not be achievable exactly, and allow some level of error from your conditions (such as not having the triangles touch exactly, or some amount of size/angle variation), then there are ways of finding an approximation.
In Kangaroo you can constrain points to a surface then use a combination of mutual attraction or repulsion and spring forces to relax points towards an even distribution. I'll post an example soon.
There are also some extra equalization functions coming in the new version that will help with this.
I tried something like this in Kangaroo (scaling a geodesic sphere then relaxing the elements on it).
It makes some improvements in the triangle equality, especially if you only take the top half and allow the lower boundary to distort, but they're still a way off equilateral. As you'd expect, the greatest variation is in the triangles that meet 5 around a vertex.
In the model shown here, the edge length ratio for those is around 1.24 and I don't think you'd get much better than that, even if you used many more triangles. If you disregard those ones, the next worst ratio is around 1.14
Here's the Rhino output from the above if you want to take a look at the kind of variation achieved.
I can't share the GH definition right now, because it is using the newer version of Kangaroo, which isn't quite ready for release yet, but I'll post it as soon as it is.
any update on how to do this daniel?
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by