Stephanie Chang

image
image
image
image

A Walk in the Park, Dynamo – Figure 1

My modeling approach began with the creation of a rectangular grid of points to cover the extent of the park’s area and used an integer slider to vary the spacing between grid points. This was followed by placement of cuboids at each grid point to represent the park’s ground surfaces. I then used sliders to specify the X and Y coordinates of the attractor point to act as the center of the sine wave ripple effect. Individual cuboid heights were set based on the distance between the attractor point’s location and the center point of the cuboid. The sine wave effect’s shape was controlled using slider inputs (number of waves, amplitude, base height). The base height values were set to be greater than the amplitude values. To achieve the same base elevation, I calculated the distance (which is half the cuboid height value) to raise the cuboids with z translation such that the position of the bases has the same elevation level.

Eliminate the Echo, Grasshopper – Figures 2 & 3

My modeling approach starts with creating an XY plane (ceiling plane) and moving it to the specified height of 12’. I then created a grid of placement points by specifying the base plane, grid cell size, and extent of the grid. The cylinder elements for each placement point were created using the base plane, radius (half grid cell size), and length. An attractor point with X and Y coordinates specified by sliders was created to represent the center of the sine wave ripple effect. Each cylinder’s height was calculated using the distance between the cylinder’s grid point and attractor point’s location. To vary the shape of the sine wave effect, I used sliders to specify the following three inputs (number of waves, amplitude, and base height). Base height was set as a function of amplitude ensuring that the base height is greater than the amplitude by 0.1. Eval nodes were used to execute functions that remapped distance values as a function of number of waves, used an amplification factor and base height to achieve positive values for the cylinders’ length, and ensure that the cylinders projected below the ceiling plane. Cylinders were then scaled in the Z direction using ScaleNU node with specifications of the geometry (cylinders), base plane, and scale z factor that was previously calculated with the sine wave. Cap holes were added to the scaled cylinders. The finished geometry is shown in Figure 2.

As a creative bonus in a separate file (4units_StephanieChang_Module2_Eliminate the Echo_creative bonus), a color gradient node took in inputs of the minimum and maximum negative height values. The color gradient of the cylinders can be adjusted by flexing the sliders for the coordinates of the attractor point, the number of waves, and the amplitude. The effect on the structure is shown in Figure 3.

Put on a Happy Façade, Dynamo – Figure 4

In this model, I studied how the grid of circular openings in a wall can be varied based on the arrangement of the attractor points. Using the provided Revit project file and Dynamo template, I reviewed the nodes and logic utilized in the creation of the Revit wall with circular wall openings as well as definition of attractor points. I adjusted the wall length and height by flexing the sliders, and the grid of placement points adapted to the set boundaries. I then calculated the distance between the attractor points and the list of flattened placement points of the circular openings, followed by taking the minimum to identify the smallest distance to the closest attractor point for each circular opening. Each circular opening’s diameter is then calculated based on the closest attractor point using the Math.cos function and various inputs (distance to closest attractor point, maximum distance calculated as the diagonal of the wall, number of waves, amplitude factor, and minimum diameter size in relation to the amplitude). Watch nodes were used to display results and double check that calculated values made sense (e.g., non-negative diameter values). I then set the diameter parameter to the computed values by using Element.SetParameterByName and set the values for the circles’ radius parameter by connecting the watch node’s output to the template’s code block for computedDiameter. Furthermore, I conducted thorough flexing of the sliders to ensure that no wall pieces were suspended mid-air at the set bounds for each slider parameter; bounds for slider inputs were adjusted accordingly based on the evaluation and geometry verified at the adjusted bounds. In general, I used Manual execution mode while tweaking multiple numbers or testing the wirings between different nodes to minimize recalculation delays. I then switched to Automatic mode in Dynamo when examining how the updated values (e.g., flexing values in sliders) impacted the geometry.