Square subdivision on a loft

I’m trying to divide this loft in X squares, but couldn’t understand how to do so. Closer to the edges the squares are stretched even though i set the ratio from the loft’s UVs.
What am I missing?
I apologize for this silly post and thank you for your time.

Equal square subdivision on a loft.gh (9.5 KB)

Square_subdivision_on_a_loft_re.gh (7.4 KB)

Is this what you want?

1 Like

It’s because you’re creating your squares in Surface uv space, which is not (usually) parameterised to have constant length. It is in general impossible to divide a curved surface into equal length squares, but an improvement can be had by dividing the parameterisation in world xyz space and then projecting back to surface uv space.

This however requires some extra steps.

1 Like

square division.gh (16.6 KB)

The idea here is that you extract two isocurves (one in each principal direction), divide those based on length, and then put the division parameters back into surface subdomains.

If all goes well the isocurves will have the same parameterisation as the surface, so you shouldn’t need to project the division points back into surface uv space. This is almost certainly always true for nurbs surfaces, I’m not 100% sure it holds for other types of surface.


Ah, this is fun. By making the choice of iso-curve parameter variable, you can see that it does matter where you pick your division curves. Perhaps a better algorithm would be to perform this process on 1000 random locations and use the average parameters.

square division (variable).gh (24.6 KB)

1 Like

Wow, there were more things involved in this than I actually thought.
Thank you both for the help, and thanks David for taking the time to explain how the logic works. It is endeed interesting.
Thanks again, this was an inspiring discovery for me.


I’m trying to divide the surface into equal square tiles of set size or create multiple families of equal size tiles. So far I have used your code to do the subdivision and it works nice in the way it gives “square” divisions but I would like to create equal panel families on the surface.

Any idea/help?

Thank you!
190723_Equal Square Tiles Families.3dm (570.6 KB)

Hi @studioframo,

Take this with a grain of salt, but I think that tiling/subdividing a double-curved surface into equal squares is probably geometrically impossible? Each square would have to feature the same side length and thus only mono-directional curvature could be achieved, without distorting any squares.

K2 could prove that as follows: divide allowing some space for expansion (a perimetric free “ring” so to speak) and do the relaxation (including the diagonals as well).

Wouldn’t using the diagonals of each square, sacrifice the square shape? A square is usually a planar 2D shape, is it not? Folding it at one diagonal, to coerce it to double-curvature, would basically divide it into two triangles (with two equally sized sides each), like in the above examples.
In cell shape, the squares would be transformed to three-dimensional, non-planar polylines, each resembling two-dimensional squares in a certain, individual projection.

Well … the diagonals are NOT used for folding, they are used for shape control (in the very same way that we use “star” lines for relaxing hexagons or higher order stuff). Angle related I-Goals is another way mind.

Anyway try it … but since you walk the (wrong, he he) walk do it via code: Daniel has exposed the K2 Methods - but forgot any kind of SDK (life sucks).

Hi @diff-arch, @PeterFotiadis,

Thank you for the reply. You are right that double curved surface would be impossible to divide in equal squares however i am interested in creating families of different shaped ‘diamonds’ that would be repetitive accross the surface hence creating a defined number of repetitive shapes to cover the surface rather than each one of them being unique.
The idea is that if I would provide a measurement of the tile side (40cm for example) it rationalizes the surface with multiple families of tiles. Even if it gets to 50 different sizes that are repetitive accross the surface is better than each one being unique - at the moment there’s around 3000 tiles. :slight_smile:

Any idea?

Thank you!

If this is some sort of AEC related thingy … then the non unique panel status is not a big deal (cost wise) since these days everything is done via some sort of CNC way. Obviously the bigger the size > economy of scale > blah, blah …

On the other hand planarity IS a big thing (case glass inside) meaning that you should spend time with K2.

On the other hand (case opaque panels) there’s always around the Bilbao nightmare (if you are close enough to the kinda “WOW” titanium skin).

But planarity is a chimera (in real life) : what about the good old triangles? (back to the future, that is).

So are the diamond families allowed to be doubly curved or are they constrained to be planar?

They have to be planar four sided tiles that follow the subdivision pattern/logic meaning that they give a clean four side edge tiles. In the middle can be different, some sort of an offcut or tolerance space where 10-100 tiles can be unique.
@PeterFotiadis yes but this is just one fragment of the whole thing. They are cut by cnc but if you imagine having 85000 different and unique tiles the logistics and setting out of each tile (done manually) would become nightmare :smile:

Plan B (1/5th of the cost) : Assuming that you have some proper exterior thermal insulation (like Foamglas - with one s) … what about a STO system coating? You can have even this (slightly kitsch) option:


@PeterFotiadis i appreciate your suggestions but it has to be tiles. There’s no insulation on the outside - it’s just tiling the surface with the tiles and mortar. :confused:

BTW: For the next project use Foamglas and Kalzip XT (they do whatever required these Germans (even the impossible) > just point them the envelope and relax).

Kalzip_XT_081023_10_Fick_Blue-Mountains.pdf (10.5 MB) Kalzip-Freeform-profiles.pdf (1000.2 KB)