2 using namespace Psychlops;
4 void ullmancylinder() {
5 const int DOTCNT = 15000;
13 double CylinderRadius=200;
17 Independent << dotcnt | "Number of Dots" | 1< rng< DOTCNT | 10 | 1000 ;
18 Independent << velocity | "Dot Velocity" | 0.0<=rng<=10.0 | 0.1 | 0.05;
19 Independent << SOA | "SOA Frames" | 1.0<=rng<=60.0 | 1 | 1;
20 Independent << bg_lum | "Luminance Inv." | 0.0<=rng<=1.0 | 1 | 1;
21 Independent << SIZE | "Dot Size" | 0< rng<=10 | 1 | 1;
22 Independent << CylinderRadius| "Cylinder Size" | 0< rng<= 400 | 1 | 50;
25 Canvas canvas(Canvas::fullscreen);
26 Psychlops::Rectangle rect(SIZE,SIZE);
27 Psychlops::Color bgcolor(0), dotcolor(1.0-bg_lum);
30 double x[DOTCNT], dx[DOTCNT], y[DOTCNT];
32 for(int i=0; i<DOTCNT; i++) {
33 x[i] = Psychlops::random(CylinderRadius*2*PI);
34 y[i] = Psychlops::random(CylinderRadius*2)+200;
37 while(!Input::get(Keyboard::spc)) {
39 dotcolor.set(1.0-bg_lum);
40 canvas.clear(bgcolor);
41 rect.resize(SIZE,SIZE);
46 for(int i=0; i<DOTCNT; i++) dx[i] = (int)(CylinderRadius*sin(x[i]+SOA_pp*phase/100.0))+canvas.getHcenter();//
\8ae
\83h
\83b
\83g
\88Ê
\92u
\82Ì
\8cv
\8eZ
47 for(int i=0; i<dotcnt; i++) rect.centering(dx[i], y[i]).draw(dotcolor);
48 //
\97\8e\82¿
\82½
\83t
\83\8c\81[
\83\80\90\94\82ð
\95Ô
\82µ
\82Ü
\82·
49 a1=Display::lastFailedFrames();
50 if(a1)Display::clear(Color(0.25,0.25,0.25));
61 p.setDesign(Procedure::DEMO);
62 p.setProcedure(ullmancylinder);