I played with @martinsiegrist definition and managed to get something more homogeneous, rebuilding flat rectangular surfaces from different sets of control points.
Got back to the script above and noticed the surfaces did not behave as expected. After calling maths to the rescue, I rewrote the entire thing using domain mappings. It turns out to be extremely simple : divide the rail and “unroll” it, divide the length of each segment by the ratio of the biggest radius to the smallest radius, and scale this new rail to the same height as the pattern. This “deforms” the rail in such a way that when mapped back, the pattern is evenly scaled on the surface.
It works for any pattern made of polylines but if this pattern happens to be a square, then Map to Surface can be used to map any pattern from a unit square…
vase_hexagons_v3 (2).gh - At least I can see something, thank you. It’s a sprawling canvas though, so reluctantly, I’ll pass on trying to understand it.
I didn’t know you had released this. Thanks for sharing! I’ve used your reaction diffusion to mesh to 3d print some things which was really satisfying!
I was hoping you would find a nice intuitive approach to avoid those math tricks I love so much !
I could clean this a bit more, but already spent almost the entire day on it so that will wait. Note that I use icon display + Group Display and that doesn’t seem as messy as it is on your screenshot. You can ignore some parts as well.
I don’t read icons. I figured you do because the ‘Draw Full Names’ components (from you) often overlap. I can turn Full Names on/off, of course (I have to turn it on first to turn it off), but the canvas is still HUGE . Difficult for me to take in, which is too bad because I’d like to understand your code.
What is “Group Display”?
P.S. Oh, Sunglasses - “Big nicknames on groups”? Took awhile to get that to work, enable Sunglasses, remove ‘Group’ from the ‘Exclusions’ filter. It’s cool but not enough.
Hi Laurent, thank you for this post. It’s a great topic and rather relevant in architecture- I thought I would share my own solution, which I used for this project a few years back, and allowed to fabricate this pod in melbourne with only a handful of node types, as the angles between members where consistent within a certain tolerance. Now that I learned how to loop, it took me under one hour to rewrite. Not as sophisticated as yours and others on this post but it works. Cheers
Yes, for pure surfaces of revolution I think using the respaced uv isovalues approach in the other definitions above can work well, but if the shape is more freeform, the relaxation approach comes into its own more.
Rather than acting on hexagons and keeping their angles, I think I’d use a triangular mesh here and take the dual at the end. The TangentIncircles goal will optimise towards a conformal mapping, so the resulting hexagons will be close to regular (within the limits created by the number of rows we set).
Here’s an example of this relaxation, outputting a hexagonal mesh at the end hexagons_relaxed.gh (129.5 KB)