Description
I wanted to create a simulation of skipping rocks on water. Depending on the rock skips (or jumps) along the water, the water ripples a certain amount of times, with each hit, around the rock’s point of contact. I wanted to randomly generating beautiful ripple effects to simulate the rock skipping experience.
Precedents and inspirations can be viewed in my project proposal.
Code
I ended up using vectors and classes to draw the ripples and rocks, respectively. I developed a Rock class in order to create instances of the rock and had to store the “skip” points, the point where the rock “bounces” on the water, as a vector of an ofPoint in order to be able to draw a ripple at that point. Below is the section of my code that contains the rock skips and ripple draw.
void testApp::update(){ //if the rock is at a skip point, draw a ripple if (rocks[i].rockPosition.y >= rocks[i].skip.y) { float width = 0; w.push_back( width ); float height = 0; h.push_back( height ); ofPoint pos; pos.x = rocks[i].skip.x; pos.y = rocks[i].skip.y; startPositions.push_back( pos ); int opacity = 255; o.push_back( opacity ); } }
Download full source here.