Ripple/Raindrop Pattern

In the damped sine wave equation, does energy correspond to Amplitude and volume correspond to Wavelength? Wave form and propagation are probably among the most studied and best understood aspects of physics so the answers we seek are certainly well documented in textbooks.

But for the lazy artist trying to visualize ripples, consider this waking insight:

The white curves are a result of plotting the damped sine curves for each point along the X axis, then mirroring them in the YZ plane and joining the originals to their mirror images. The blue curves are the result of “time shifting” the white curves in the X direction and lopping off both ends to match the original curves.

I butchered a copy of the model I posted yesterday, leaving only the “Ripple Preview” feature to see the effect on any selected point. The white group at the bottom does the mirror/time shift thing. (39.4 KB)

There must be a way to accomplish this mathematically instead of by geometric construction?

1 Like

… i’m quite thinking the same… more or less…

I’m finding a lot of stuff, but it’s incomprehensible for me… complex math.

I’m looking at droplet splashes in slow-motion, different crests have different speeds, sort of shockwave effect.

Maybe it’s easier to just design the animation aesthetically and forget about math/physics behind.

1 Like

I remember looking at online “textbooks” in the past and being overwhelmed by the complexity.

I completely agree.

Looking again at your brilliant “droplets” animation, the time factor for each point is equivalent to its negative Z value, right?


Nice elegant definition @maje90

I was inspired to have a play with an iterative version using Kangaroo-

Using springs instead of Laplacian smoothing gives a slightly different effect, with more isolated waves- (12.0 KB)

Doing it with only existing goals this simulation ends up doing a lot of unnecessary work - since it is calculating all the 3d forces and then restraining them to be only vertical, when all that really needs to be updated is a single scalar per vertex. It could be interesting to make a custom goal for this, since it should be much more efficient.
I imagine it would even be possible to put all this in a GhGl shader.

Also - have a look at this:


It’s also fun to anchor some of the points within a region to create an obstacle for the ripples to flow around


Being able to do that on an interactive web page is very impressive!

This is even nicer-

The trick for the caustics is clever:


Astonishing! Created “back in 2011”… We have such amazing technical capabilities, yet can’t seem to shake off the political dark ages.

Every picture has it’s shadows
And it has some source of light
Blindness, blindness and sight
The perils of benefactors
The blessings of parasites
Blindness, blindness and sight
Threatened by all things
Devil of cruelty
Drawn to all things
Devil of delight
Mythical devil of the ever-present laws
Governing blindness, blindness and sight
– Joni Mitchell

1 Like

We need native grasshopper access to OpenCL and similar stuff… like… years ago.

Maybe the whole mesh libraries of rhino should be remade to support GPU computing and parallelization.

Time passes…

These samples should all be possible through GhGL. Probably hard to implement, but possible.

Check this as well (18.1 KB)


@DanielPiker tha’s amazing. As i m new in learning GH is there any possibility to attach the .gh for this version too.

@DanielPiker Does this work for a boundary that the ripples bounce off?
So you could essentially have a water container of any shape and simulate the ripples from a drop source(s)?

A post was split to a new topic: GPU Support in Grasshopper (39.6 KB)


@Joseph_Oster Whow, it’s off topic for sure, but I was listening to “Woodstock” by Joni Mitchell while just finding your answer… I must signal this kind of … synchronicity! :smile: and cheers from rainy Marseille, France

1 Like


I’m new to kangoo. I find this definition very nice.

Is there a way to set a point or multi point where the ripple(s) start instead of using the “Grab” component ?

Then, it makes me think to some experiments that use sound transducer in order to generate ripples on water like this one

Could it be possible to set a strength point that iterates over time like the effect of a frequency that sounds through a transducer ? And what could be the component to explore in order to accomplish this in kangoo ?

Thank you,

Just a stupid question… how do you change Grab to some points/spheres drop ?