Image of My Model
Ripples in a Pond: The basic concept of this design followed the instruction as outlined by Modulue 2. There are a number of sliders that control the final design: Number of Points - Number of points in the x/y directions Point Spacing - Spacing Between points XLoc- Attractor - Attractor X Location (Based on number of points) YLoc - Attractor - Attractor Y Location (Based on number of points) Base Offset - Top of Cylinders offset Number of Waves - Number of sin waves Amplitude - Amplitude of waves scaling factor The number of points and spacing are used to create an array of base cylinder points. XLoc /YLoc are multiplied by the point spacing and then used to create an atttractor point. Geometry.DistanceTo is then used to find the distance between the attractor and all of the array points. This distance is then normalized by the maximum value, and the multiplied by 180 so that the angle values are bound by 180, which is the input angle. Additionally the amplitude is multiplied by the maximum dsistance then divided by the distance, which allows for decreasing the amplitude as you get further from the attractor point. The base offset is then added to the absolute value of the decreasing amplitude multplied by the sin of the input angle and number of waves. This value creates the cylinder height. The original points are used and then tranlated verticaly by the cylinder heights and then both of these sets of points are flattened and plugged in to Cylinder.ByPointsRadius. The radius is determined by the point spacing divided by 3.