#include #include #include GUI gui; VectorTracker vt; Mutex mutex; void updateVT(){ Mutex::Locker l(mutex); static int &dim = gui.getValue("dim-val"); static bool &optOn = gui.getValue("trivial-val"); static bool &normOn = gui.getValue("norm-val"); static bool &ffOn = gui.getValue("ff-val"); vt = VectorTracker(dim, 10000, std::vector(normOn?dim:0,0.9), ffOn ? VectorTracker::firstFree : VectorTracker::brandNew, 0.0, optOn); } void init(){ gui << "slider(1,1000,2)[@label=data dimension@handle=dim@out=dim-val]"; gui << "slider(1,300,30)[@label=num inputs@handle=num@out=num-val]"; gui << "slider(0,5,0)[@label=num std. deviation@handle=dev@out=dev-val]"; gui << ( GUI("hbox") << "fps(10)[@handle=fps@minsize=5x2]" << "togglebutton(off,on)[@label=try tivial@handle=trivial@out=trivial-val]" << "togglebutton(off,on)[@label=use norm@handle=norm@out=norm-val]" << "togglebutton(off,on)[@label=first free ID@handle=ff@out=ff-val]" ); gui.show(); gui.registerCallback(new GUI::Callback(updateVT),"dim,ff,norm,trivial"); updateVT(); } void run(){ static int &num = gui.getValue("num-val"); static int &dev = gui.getValue("dev-val"); static std::vector data; while(true){ mutex.lock(); data.resize(clip(num+(int)gaussRandom(0,dev),0,300)); for(unsigned int i=0;i ids(data.size()); for(unsigned int i=0;i