algorithmic modeling for Rhino

Starting from a sphere and reducing its volume while keeping the surface area and preventing self-intersection produces some nice buckling patterns.
Using the Volume and SphereCollide goals in Kangaroo 2.02. This example file can be downloaded from here:

Views: 1825


You need to be a member of Grasshopper to add comments!

Comment by Daniel González Abalde on May 1, 2015 at 1:59am

Oh yesss, torture for this hours of the morning... X) I swear I thought for a moment that the floating points fulfilled the paradox of Schrodinger's cat haha but Rutten gives the answer in the third link. Thanks for them.

But following your question, is it applied the same rule to 0,0...0001 and to 0,2...6528? It seems that there is no apparent logic to cancel the differences, but it should be somewhere. Is it round, or that the sum is canceled each other for some reason?

Comment by nikos tzar on April 30, 2015 at 6:04pm

I was intrigued by this conversation and started reading about precision until steam started coming out of my ears (and this is not the first time I do this search....).

It is generally about how computers deal with real numbers (floats-doubles).

I can't say I understand all of this in depth and certainly can't break it down to an easy-to-comprehend explanation so instead I will just torture you by providing links (hehehe)

(I find Hannes Löschke's posts very helpful (and he is involved in most of these conversations))

Still I have many questions,

for example, in the image you posted, why do all the distances add up to exactly 100? Do the precision errors cancel each other out??

Comment by Daniel González Abalde on April 30, 2015 at 4:30pm

Good @Nikos, but you (or anyone) could confirm the true accuracy used internally? Because one thing is the numeric display and ither is the really used. I say... why the computer will use more precision than it needs, if silly consume memory?

I really do not want to seem an obsessed stubborn, but this does not finish to convince myself... :/

Comment by nikos tzar on April 30, 2015 at 3:22pm

It seems that even in a spherical surface the floating points' "noise" is not the same for every point on the surface:

Measuring the distance from the center of the sphere to 100 random points I got 4 different numbers... 

Comment by Daniel González Abalde on April 30, 2015 at 12:16pm

I understand that, but assuming that idea, I wonder... having a spherically symmetric mesh (thi is, rebuilding the mesh projecting points to a spherical surface, all points equally far to the center), where the irregularity is born? Why a differential error should appear on floating values if all points are applied the same force? Rhino has a limit on the floating accuracy but should apply to all points in the same way? Why the floating error accumulation is not constant at all points?

I think the error are in the length of the lines of input mesh. Someone could get wrinkles asymmetrical in a input mesh with edges with the same length? I tried it and could not.
This is a unimportant issue, but I'm too curious to not deepen xD
Adding irregularities in edges, the mesh should wrinkle asymmetrically, and it is.

Comment by Alexander on April 30, 2015 at 9:50am

Also helps that physical simulations of this complexity are really chaotic, so small floating point errors snowball into larger changes. In situations where a more stable equilibrium is reachable this isn't a concern.

Comment by Ángel Linares on April 30, 2015 at 9:40am

Daniel: as Mateusz said it looks like it comes from floating point error accumulation.

Comment by Daniel González Abalde on April 29, 2015 at 6:53pm

Ok, good to know! But where this imperfections may arise if the accuracy is the same for all points-coordinates? They should not have the same error at every point, so would maintain the symmetry? Or am I missing something? I saw the lines of the mesh after the subdivision are of different sizes, it is not most probable that local differences in the lengths of the lines triggered the broken symmetry? You'd be able to get those wrinkles in a mesh with identical edges as a box mesh?

Comment by Daniel Piker on April 29, 2015 at 5:31pm

@Daniel - Kangaroo does not iterate point-by-point, but does a simultaneous global solve for each iteration.

I think it is more that although the starting configuration has icosahedral symmetry (it is a mesh subdivided with Weaverbird), when this is represented with finite precision xyz coordinates it introduces tiny numerical imperfections, which trigger the symmetry breaking.

What's nice is that slight variations in the input parameters (pressure, volume reduction fraction, smoothing strength, etc.), can produce such richly varying geometries.

Here's some of the research that prompted my interest in these matters:

Comment by Daniel González Abalde on April 29, 2015 at 5:18pm

Could it be that the asymmetry comes from the imbalance caused by the sequential execution (iterating point by point)?





  • Add Photos
  • View All


  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service