Why is Divide Domain not Splitting surface equally?

Hi, any thoughts on why that might be the case? Thanks.

right click surface and select ‘reparameterize’

hmm. Just tried but no bueno unfortunately.

UV divisions depend on how a surface is created, they are not guaranteed to be equally spaced.

NO FILE :interrobang: :-1:

P.S. You can divide surface edges to create your own divisions.

1 Like

these two short readings (written by the creator of Grasshopper himself) will make you understand the season why Divide Domain is not splitting the surface equally :+1:

consider that because your surface is a curve extrude along a vector, your situation is the same as if we reference it to a single curve (in real you also have a V domain [0,1], but because it’s a linear extrusion it changes nothing in terms of explanation)

1 Like

I read the first page you recommended and it does nothing for me. The second page is much longer (TLDR) so I don’t know if it explains “the reason why Divide Domain is not splitting the surface equally” or not.

The simplest way I know is to use Iso Curve to see them. Who cares why?

2 Likes

it’s the very same concept of parameters along a nurbs curve: the parameter of the curve will vary its speed depending on curvature, control points location…

for instance here, curve reparametrized with Domain [0,1], parameters Range equally distributed in Domain [0,1], one might expect that the curve is divided into 10 equal-length segments, but because parameters travels at different speeds along the curve, you get a very uneven distribution:


Parameter_speed_in_curve.gh (9.4 KB)

similarly, when that curve becomes a surface through a linear extrusion, if you evaluate the U/V Parameter in the very same previous range you get the exact very same divisions

Parameter_speed_in_curve_2.gh (25.1 KB)

long story short, parameter travels at varying speed along the same nurbs curve, it might be that an increment of t of 0.1 makes you travel 10% of curve length, or 25% of curve length (random numbers I’m spitting here…) depending on where you are on the curve… so you can’t rely on those to make equal divisions

3 Likes

To divide without reparameterizing I do this.
But will it be correct?

it looks correct because you get the parameters t from the Divide Length:

a bit over-complicated maybe :smiley: I think you could replace these3 4 components with a single Divide Curve, and just use its t output instead:

Parameter_speed_in_curve_3.gh (9.9 KB)

4 Likes

I started with something else in mind but ended up with a 2D version of your code:


srf_div_2025Jun18a.gh (11.3 KB)

The yellow pipes show the uneven isocurves on this surface. I’m not sure why U and V directions appear to be reversed in the two sets of code here? But I typically forge ahead without answers to the why questions. :smiling_face_with_sunglasses:



srf_div_2025Jun18b.gh (17.0 KB)

Using parameters is not a very bulletproof way of splitting since it relies on exact idealized parameterization. Using a secondary method of splitting is better in most cases.

Lunchbox and paneling tools both have methods that help with even spacing.

I dare you to prove that? Please compare Lunchbox and paneling tools to what I posted. If you mean specific dimensions of surface fragments, that can be done using DivLength instead of Divide Curve. Don’t expect me to install those plugins to test your proof.

Here is another discussion on splitting into panels that may help.

Yeah, I was in that thread.

With all due respect Scott, I wasn’t convinced then and am not convinced now.

Thank you!