All pastes #947528 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-03-18 15:38 UTC
rendered paste body
// 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; w<layer->width();w++){
                for(int h =0; h<layer->height();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);
                        }
                }
        }
}