Ripples on a Pond - Liangtong Lyu

Image of My Model

image

Description

The modeling started with creating rectangular grid of points in Dynamo as the base points of cylinders. Number of points and spacing can be edited using integer sliders, which were used to create a sequence of step values. Points were created by coordinates with cross product lacing, and then being used to create a list for coordinates of start points. The end points of cylinders are generated by translating the base points geometry by the height of cylinders in z direction, and then another list for coordinates of end points was generated. Calculation of heights will be talked later. Giving the lists of start points and end points, and using one third of the spacing as the radius, a series of cylinders were created by points and radius.

After having the cylinders, the pebble was generated as a point with X and Y locations relative to number of points per row, which can be modified through two number sliders. The real coordinates were calculated by using the relative location multiply by the spacing and were then used to create the pebble point.

The third step was to adjust the cylinder heights to simulate ripples. First, a series of distances from the pebble to the base points of each cylinder was calculated. To better represent the diminishing wave, the distances need to be normalized by 180 which were used as input angles for the sine wave, otherwise the angle will be so small to represent the wave. The user defined amplitudes also need to be normalized by distance. The cylinder heights were calculated as the absolute value of a sine wave, modified with user defined amplitude and number of waves, plus the user defined offset divided by the distance calculated before.

After confirming the design works well in Dynamo, family instances of cylinder were created in Revit at the start points defined at the very beginning. The height and radius were set as the height calculated in step three and the user defined radius.

The final step was to adjust user defined parameters to make sure the ripple looks well.