virtual void on_idle() { unsigned i; for(i = 0; i < m_num_points; i++) { m_points[i].x += random_dbl(0, m_slider_ctrl_sel.value()) - m_slider_ctrl_sel.value()*0.5; m_points[i].y += random_dbl(0, m_slider_ctrl_sel.value()) - m_slider_ctrl_sel.value()*0.5; m_points[i].z += random_dbl(0, m_slider_ctrl_sel.value()*0.01) - m_slider_ctrl_sel.value()*0.005; if(m_points[i].z < 0.0) m_points[i].z = 0.0; if(m_points[i].z > 1.0) m_points[i].z = 1.0; } force_redraw(); }
void generate() { unsigned i; double rx = initial_width() / 3.5; double ry = initial_height() / 3.5; for (i = 0; i < m_num_points; i++) { double z = m_points[i].z = random_dbl(0.0, 1.0); double x = cos(z * 2.0 * agg::pi) * rx; double y = sin(z * 2.0 * agg::pi) * ry; double dist = random_dbl(0.0, rx / 2.0); double angle = random_dbl(0.0, agg::pi * 2.0); m_points[i].x = initial_width() / 2.0 + x + cos(angle) * dist; m_points[i].y = initial_height() / 2.0 + y + sin(angle) * dist; m_points[i].color = agg::rgba(m_spline_r.get(z) * 0.8, m_spline_g.get(z) * 0.8, m_spline_b.get(z) * 0.8, 1.0); } }