void plotrepulsor(rep r) { float j; for (j=0.0; j<2.0*pi; j=j+2.0*pi/8) { plotarrow(window1,r.pos,Vmult(r.str+r.dstr*sin(r.off+frame*r.fre),Cart(80.0,j))); } }
vector wibbly(part *pa) { pa->walkr=pa->walkr*walkrdamp+pa->walkdr; pa->walkt=pa->walkt+pa->walkdt; pa->walkdr=pa->walkdr*walkdrdamp+(drand48()*2-1)*walkdrrnd; pa->walkdt=pa->walkdt*walkdtdamp+(drand48()*2-1)*walkdtrnd; return Cart(pa->walkr,pa->walkt); }
void movepart(part* pa) { vector tmp; tmp=forceat(pa->pos); brownian(pa); pa->vel=Vadd(Vmult(dampening,pa->vel),Vmult(strength,tmp)); pa->walkr=pa->walkr*walkdamp+(drand48()*2-1)*walkrrnd; pa->walkt=pa->walkt+(drand48()*2-1)*walktrnd; pa->pos=Vadd(pa->pos,Vadd(pa->vel,Cart(pa->walkr,pa->walkt))); }
BoostCart::BoostCart(int stage) { const Config& c = Config::GetInstance(); this->stage = stage; K = c.K; carts.reserve(K); for (int i = 0; i < K; i++) { // distribute the landmarks carts.push_back(Cart(stage, i%c.landmark_n)); } const int landmark_n = c.landmark_n; const int m = K*(1 << (c.tree_depth - 1)); // K * leafNume w = Mat_<double>::zeros(m, 2 * landmark_n); }