# What would be the best way to patch this?

I have created several polylines based on a voronoi pattern. Each segment has a slight concavity to it to yield a scalloped form. However, I’m not sure what the best manner would be to build a surface between all of these polylines. Bonus points if you can also recommend a way to add a fillet to each arched edge so soften the form.

I appreciate any input!

2018.08.23_mcneel_forum.gh (11.8 KB)

AVOID at any cost the patch: takes days/weeks/months/years to finish:

Plan B: distort proportionally the edges (Vor cells can have very small edges) and compromise by making 3/4 pts surfaces (that’s real-time), say like this:

What if you don’t use the proportional option? You get ugly stuff like this: ’

Plan C: Make flat meshes per Vor cell (that’s a bit tricky, mind: avoid Delauney on random points) and use K2 to relax the mesh in the exact way that we do in tensile mebranes (using forceA for naked edges and forceB for clothed ones + some gravity).

For sure PlanC is the ideal solution … but if you play with “bend” values … PlanB is not that bad

I was thinking of the Kangaroo approach as well. I think that is my best bet.

This could help

But now I will advise you to use Dendro plugin if you are OK with meshes

I downloaded and installed the Dendro plugin but have yet to give it a try. I’ll see if there’s a component in there that might do.what I’m imagining.

BTW: In case that you try a nurbs compromised solution and if you use Polyline Centroid … then IF the “connecting” curves are bezier spans and the end tangent is horizontal [some recursion could attempt to do the “ideal” other tangent] … then the surf combo could (?) look “smoother” (?).

But if I was you I would forget the Vor topology and use 4/3 pts (normalized or random) surfaces and then “inflate” them in a couple of milliseconds. That’s a very clean and very fast solution mind (shown a random inflation depth and random elimination result by projecting flat stuff in some revolved target surface) :

@TheCyclist here a solution using Dendro plugin

I used Dendro Point To Volume with a center and radius coming from Sphere Fit

And here with a smoothing

2018.08.23_mcneel_forum_LD.gh (22.7 KB)

Other view smoothed on top

8 Likes

Simple way of generating it as NURBS, using only native components, and avoiding a solid boolean of everything with everything else:

scallop.gh (10.3 KB)

23 Likes

What a nice, simple solution, thank you! I think I just need to think about these situations more. When I see your approach, it makes the most sense.

Thank you! Unfortunately, I’m having trouble getting Dendro to recognize the dendroAPI.dll file. I want to experiment with this plugin though. I would like to try and mimic OMA’s sponge wall from the Prada Beverly Hills store.

The rendered images you posted of this too look amazing.

Did you follow the instructions and turn off COFF?

When I type the command ‘Grasshopperdevelopersettings’ a window pops up with a blank libraries folder box and a check box labeled ‘memory load *.gha assemblies using COFF byte arrays’. I assume this is the COFF check box?

EDIT: It’s working now!

Nice Daniel but I think it must work just with constant radius sphere. Here radius is increasing inside.

Good point. I haven’t tried it yet with varying cell size

It’s true this approach relies on using spheres of the same size (otherwise you’d need to calculate a weighted Voronoi diagram). The size of the Voronoi cells doesn’t need to be linked to sphere radius though - that’s just a result of how his points are distributed.
Talking of distribution, a suggestion for one way of getting a nicer distribution here would be to apply a few iterations of Lloyd’s algorithm (repeatedly moving the Voronoi points to their cell centroids). Making the cells more centroidal means their boundaries will be at more equal heights:

scallopsizes.gh (19.3 KB)

15 Likes

very nice spherical solution. it would be way better (computing wise) to first filter out the curves by a simple ie. curve end point distance from a plane sort filter. this way you will have half the intersections to calculate and no area calculations needed later. In complex definitions avoiding areas and intersections that are not needed in the beginning, can make a real difference, especially as the geometry data adds up.

in this definition (scalop.gh) you may earn half the power, roughly from 3.1 down to 2.3 sec, which is not bad at all. in the case of scallopsizes.gh, it drops from 30 to 7 seconds, giving a real advantage.

Thanks for the input! Can you upload your files so I can take a look?

i recreated it with end points because had not saved them at all. first version was with evaluate curve to find the middle of each curve, which may be a tad slower, or not. the logic is just to find a point to compare against it’s projected one anyway.

the reason scallopsizes_distance.gh gains 23 seconds is because the last, intersection / splitting part is the most resource intensive, so numbers of intersections goes up, times goes down.

in general, try to avoid calculations, especially geometry ones. the basic problem of grasshopper is that in every almost step it creates geometries, so it is very resource intensive, as opposed to non graphical programming. that what is being said at least, i am no expert.

furthermore, it does not use the outputs very interactively, which is another talk, for GH2.

edit: correct definitions. check what time gains we have, things can slip.

scallop_distance_1.gh (12.0 KB)
scallopsizes_distance_1.gh (16.4 KB)

This is fantastic. Is there any capability to get this into a Nurbs from dendro? Just quadremesh?

@flatform @DanielPiker
I have checked you files, was amazing.
How do we add that script in revolve surface, I have attached rhino base file.

Thank you!
test revolve.3dm (4.3 MB)