Grasshopper

generative modeling for Rhino

Hi all,

I've been investigating on the subject of customized (uneven) curve divisions recently. I was especially interested in finding a solution for controlling the "density" of division points on a curve.

What I've come up with is a definition which let's you aply a custom "density function" to a curve and divide it into segments of equal "weigth" rather than length.

The results are satisfactory:


... and quite precise:


However, some parts of the definition are still a bit convoulted.

Any suggestions how to make it simpler?
Has anybody tried other ways to solve similar problems?

I'll be making an attempt to write a VB component which does the same thing and maybe experiment with surfaces, so I'd really apreciate any feedback on this one.

Thanks!

Tags: curve, density, division, example, integral

Views: 1612

Attachments:

Reply to This

Replies to This Discussion

I think you could move your definitions a lot further with a "Mass addition" component, from which you use the partial results to evaluate points along a curve. check out the attached file and picture.
Attachments:
And I think what you are doing is really neat! This could go in all sorts of fascinating directions! I can't wait to see more.
I apologize for saying you could "move it further": your definition is very well developed (and cool!) and you already used a mass addition component, I just didn't look carefully enough. Nevertheless if you are trying to do what I think you are trying to do, I think it conceptually comes down to extracting the incremental values out of a smoothly varying function. This has tons of applications. My next thought is point density based on ARGB values drawn from a finite element analysis map of some surface, with a structure generated from the points and mapped back onto the surface. Or maybe you could input something like one of Ted Ngai's solar radiation maps.
Hi Jacek,
have you tried that?
Obviously doesn’t give you the graph, but it’s a fast way to do it.

Regards,
Carlos
Attachments:
I was helping a student with a very similar question just the other day.
One way is to use JellyFish attractor points :

I guess you could also make it so the attractors worked directly on the curve points, but kept them constrained to the curve, as that would probably be more intuitive to interact with.
A similar approach should also work for surface subdivision.

Here is the definition: density.ghx
here it is with attractors acting directly on the curve points:

density2.ghx

Its not exactly the same as constraining points to the curve, just moving them then taking CurveCP, but it seems to work ok.
Hi Daniel,

I tried to use your definition, but couldn't figure out what exactly the sinks do.
can you elaborate a bit please?

many thanks,

Guy


P.S - Jack, you made something really nice here! thanks


The sinks pull points from the curve towards themselves. These points are then projected back onto the curve.
Each sink consists of a position and a strength - Supplying them as circles is just a convenient way of controlling the inputs instead of having to create a slider for every point.
thanks!
I find it very useful
Nice work there.. really good stuff.

A similar method I worked on a while ago is Curvature Based Division.. needless to say, its got some very handy implementations in real world architecture. The definition is extremely simple, though it gets a bit complex for surfaces.


There have been times when I have found the Graphs in GH not good enough for my intentions, and so I go ahead and build one in the Rhino viewport itself as a curve object, and then sample its x & y values. For your example above, do you think it would be simpler to make a control curve around the curve to be divided, whose profile determines the density of divisions on the main curve -- also more intuitive I think?
hi suryansh

great tool, you just builded the curvature graph with components
nice idea, but i just thought about how can we write that in vb and get the closest point always @ the right t-point and not, if the curve is to tight together and has a huge curvature on the wrong t point of the curve because the closest point is on the other side...( so how can we setup the exclude algorithm?....maybe the grasshopper crew can point me in a right direction)
i studied the sdk on curvaturegraph util but it is not possible to extract the points on the curve....
best to]
Last week I've created a basicly identical definition for curvature-based division (less neat, though :) and stumbled upon the problem you've mentioned:


I think we can get around it by shattering the Curvature-Graph Curve and the Base Curve into segments using the G3-discontinuity points of the latter and finding the closest points for each pair of sub-curves separately:


You should be able to use the same concept in VB.

RSS

Translate

Search Grasshopper

Members

Photos

  • Add Photos
  • View All

© 2012   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service