# Module 2 - Xuan Wu

Journal Entry For
Module 2 - Ripples on a Pond

# Part 1: Screenshots of model geometry

One pebble & diminishing effect in Revit:
One pebble & diminishing effect in Dynamo:
Two pebbles & diminishing effect in Revit:
Two pebbles & diminishing effect in Dynamo:

# Part 2: Modeling approaches

To complete this module, I follow these steps:

Step 1: Generate a new Revit file and create a rectangular grid of cylinder elements in Dynamo. To achieve this, I use a combination of the techniques explained in the videos on Attractor Logic and the example employing tower heights. For example, I first generate a point grid for positioning the cylinders and then flatten it by employing cross-product lacing.

Step 2: Create a pebble point. Use the pebble point as the attractor node and determine the distance between each point on the grid and the pebble point.

Step 3/5: Adjust the heights of the cylinders to simulate ripples. The height of each cylinder is determined using the Cylinder.PointbyRadius node in Dynamo. I use a specific height point as the “endpoint.” For the diminishing effect, I divide the height offset by the distance from the pebble drop point. As the distance gets greater, the height offset computed for the wave will get smaller. Furthermore, I incorporate an extra value of 5 to my distance measurement to make sure that I never divide by zero, which would result in an invalid code.

Step 4: Create Revit elements that match the Dynamo environment. I load the cylinder mass into the Revit project from the Library and use the FamilyInstance.ByPoint node in Dynamo to place an instance at each of the grid points. Lastly, I modify the amplitude, number, and base offset of waves, along with the height and radius of the cylinder to ensure that the ripples are clearly noticeable.

Step 6: Simulate the effect of dropping two pebbles. My assumption about the impact of waves created by multiple pebble drop points is the superposition of two waves. Therefore, I generate individual heights and add them together.

During the entire process, I try to clearly label all number sliders and other inputs according to their corresponding variables and minimize the number of crossovers between nodes. Also, I group my code based on each step. While working on the code, I did come across some errors, but I managed to debug them through trial and error. Overall, I thoroughly enjoyed working on this assignment! It was fascinating to witness how the various input parameters influenced the overall design.