// Method called each time step before computation void World::step(){ annarLayer* layer = net_->getLayer(string("input")); float radius1=0.7f; float radius2=0.1f; float sigma=3.0f; int speed1=5000; int speed2=1000; float center_w1=(float)(layer->width()/2+ layer->width()/2 * radius1 * cos(2*M_PI* (net_->nb_step()%speed1)/speed1 )); float center_h1=((float)(layer->height()/2+ layer->height()/2*radius1* sin(2*M_PI* (net_->nb_step()%speed1)/speed1))); float center_w2=(float)(layer->width()/2+ layer->width()/2 * radius2 * cos(2*M_PI* (net_->nb_step()%speed2)/speed2 )); float center_h2=((float)(layer->height()/2+ layer->height()/2*radius2* sin(2*M_PI* (net_->nb_step()%speed2)/speed2))); float dist1=0.0f; float dist2=0.0f; for(int w =0; wwidth();w++){ for(int h =0; hheight();h++){ dist1=(w-center_w1)*(w-center_w1)+(h-center_h1)*(h-center_h1); dist2=(w-center_w2)*(w-center_w2)+(h-center_h2)*(h-center_h2); if(dist1 < dist2){ layer->neuron(w,h)->setBaseline(exp(-dist1/sigma/sigma)+0.2f*rand_num); } else{ layer->neuron(w,h)->setBaseline(exp(-dist2/sigma/sigma)+0.5f*rand_num); } } } }