OSDN Git Service

test
[psychlops/silverlight.git] / test4 / PsychlopsMain.cs
index 5fe3ea7..e69a680 100644 (file)
@@ -1,4 +1,218 @@
-\r
+using Psychlops;\r
+\r
+namespace PsychlopsSilverlightApp\r
+{\r
+\r
+       public class PsychlopsMain\r
+       {\r
+\r
+\r
+               public void psychlops_main() {\r
+\r
+       Canvas display = new Canvas(768,768);\r
+\r
+       double rect_size = 100;\r
+       double rect_lum  = 0.5;\r
+       double bg_lum    = 0.5;\r
+       double size = 250.0;\r
+   double sigma;\r
+   sigma = size/6.0;\r
+   double lambda;\r
+   lambda = 6*sigma;\r
+   int envelopemode = 0;\r
+   double refresh = display.getRefreshRate();\r
+   double[] SF=new double[2];\r
+\r
+   SF[0]=4.0;\r
+   SF[1]=4.0;\r
+\r
+   double phase=0;\r
+\r
+   double[] initphase = new double[2];\r
+   double _i, _j, _x, _y, _x2, _y2, col;\r
+   double amplitude = 1.0;\r
+\r
+       Rectangle fixation1 = new Rectangle(3,9);\r
+   Rectangle fixation2 = new Rectangle(9,3);\r
+       fixation1.centering();\r
+       fixation2.centering();\r
+   Rectangle contrastrect = new Rectangle();\r
+   contrastrect.set(760,760);\r
+\r
+   Image envelope = new Image();\r
+   Psychlops.Color bglum= new Color(0.5,0.5,0.5);\r
+   Psychlops.Color masklum = new Color(0.5,0.5,0.5,0.5);\r
+\r
+       Interval rng = new Interval();\r
+\r
+\r
+       Psychlops.Widgets.Slider TF;\r
+       TF = new Psychlops.Widgets.Slider("TF", 0.25<=rng<=2.0 , 0.1);\r
+   TF.value=0.75;\r
+\r
+\r
+\r
+       Psychlops.Widgets.Slider SFs;\r
+       SFs = new Psychlops.Widgets.Slider("SF", 4.0<=rng<=16.0 ,  4.0);\r
+       SFs.value = 4.0;\r
+\r
+   Psychlops.Widgets.Slider contrast;\r
+       contrast= new Psychlops.Widgets.Slider("Contrast", 0.0<=rng<=1.0 ,  0.1);\r
+       contrast.value = 0.1;\r
+\r
+\r
+       var element =  StaticFunctions.NewArray<Figures.ShaderGabor>(2);\r
+    for (int i = 0; i < element.Length; i++){\r
+           element[i].setSigma(sigma); // set a size of patch as a halfwidth of Gaussian\r
+           element[i].orientation = Math.PI/4.0+Math.PI/2.0*(1-i);//Math.PI/2*(rand()%2);// //set orientations\r
+           initphase[i]=0;\r
+  }\r
+\r
+\r
+\r
+      envelope.set(size, size);\r
+      envelope.clear(bglum);\r
+\r
+   for(int i=0; i<size; i++){\r
+       for(int j=0; j<size; j++){\r
+           _i=i-size*0.5;\r
+           _j=j-size*0.5;\r
+           _x=_i*Math.cos(-Math.PI/4.0)+_j*Math.sin(-Math.PI/4.0);\r
+           _y=-_i*Math.sin(-Math.PI/4.0)+_j*Math.cos(-Math.PI/4.0);\r
+           col=Math.exp(-(_x*_x)/(2*Math.pow(sigma*2/6.0,2.0))-(_y*_y)/(2*Math.pow(sigma*2,2.0)));\r
+           envelope.alpha(i,j,1.0-col);\r
+\r
+           }\r
+       }\r
+\r
+\r
+       while(!Keyboard.esc.pushed()) {\r
+           if(Keyboard.spc.pushed())envelopemode++; envelopemode%=2;\r
+       Display.clear(bglum);\r
+       phase ++;\r
+       //phase = fmod(phase,60);\r
+\r
+       for(int i=0; i<2; i++) {\r
+           element[i].phase =(SF[i]/SF[0])*amplitude*\r
+Math.PI*Math.sin(Math.PI/2*i+2*Math.PI*phase*TF/refresh);\r
+           element[i].wavelength = lambda/SF[i];\r
+           element[i].contrast = contrast;\r
+       }\r
+\r
+\r
+       element[0].centering().shift(-size * 0.6, -size * 0.6);\r
+       element[0].draw();\r
+       element[1].centering().shift(size*0.6,-size*0.6);\r
+       element[1].draw();\r
+               element[1].centering().shift(-size*0.6,size*0.6);\r
+       element[1].draw();\r
+               element[0].centering().shift(size*0.6,size*0.6);\r
+       element[0].draw();\r
+\r
+\r
+               if(envelopemode>0){\r
+                   envelope.centering().shift(size*0.6,-size*0.6).draw();\r
+                   envelope.centering().shift(-size*0.6,size*0.6).draw();\r
+                   }\r
+       masklum.set(bg_lum, bg_lum, bg_lum, 1-contrast);\r
+       contrastrect.centering();\r
+       contrastrect.draw(masklum);\r
+       fixation1.centering().shift(size*2,0.0);\r
+       fixation1.draw(Color.red);\r
+       fixation2.centering().shift(size*2,0.0);\r
+       fixation2.draw(Color.red);\r
+\r
+          Display.var(Mouse.x, 300, 300);\r
+          Display.var(Mouse.y, 300, 320);\r
+\r
+               Display.flip();\r
+\r
+\r
+       }\r
+\r
+}\r
+\r
+\r
+\r
+       }\r
+\r
+}\r
+/*\r
+\r
+using Psychlops;\r
+//Position Bias Program\r
+namespace PsychlopsSilverlightApp\r
+{\r
+\r
+       public class PsychlopsMain\r
+       {\r
+               Canvas cnvs;\r
+               Image img, img2, img3;\r
+               int isize = 40;\r
+               int frames;\r
+               Psychlops.Widgets.Slider tfreq;\r
+               Psychlops.Widgets.Slider contrast;\r
+               Psychlops.Widgets.Slider lambda;\r
+\r
+\r
+\r
+               public void psychlops_main()\r
+               {\r
+                       cnvs = new Canvas(300, 600);\r
+                       Interval rng = new Interval();\r
+                       tfreq = new Psychlops.Widgets.Slider("Temporal Frequency(Hz)", -5 <= rng <= 5, 3.0);\r
+                       contrast = new Psychlops.Widgets.Slider("Contrast", 0.0 <= rng <= 1.0, 0.25);\r
+                       lambda = new Psychlops.Widgets.Slider("Wave Length", 10.0 <= rng <= 120.0, 30);\r
+\r
+                       img = new Image(isize * 2, isize * 2);\r
+                       img2 = new Image(isize * 2, isize * 2);\r
+                       img3 = new Image(isize * 2, isize * 2);\r
+\r
+                       var gabor1 = StaticFunctions.NewArray<Figures.ShaderGabor>(100);\r
+                       foreach (var g in gabor1)\r
+                       {\r
+                               g.setSigma(isize/8).centering().shift(Math.random(300) - 150, Math.random(600) - 300);\r
+                               //g.setSize(isize).centering().shift(Math.random(300) - 150, Math.random(600) - 300);\r
+                               g.orientation = Math.random(2 * Math.PI);\r
+                               //g.orientation2 = Math.random(2 * Math.PI);\r
+                       }\r
+\r
+                       while (true)\r
+                       {\r
+                               cnvs.clear(new Color(0.5));\r
+\r
+                               Figures.drawGabor(ref img, isize / 8, 1 / lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * tfreq / 60);\r
+                               Figures.drawGabor(ref img2, isize / 8, 1 / lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * -tfreq / 60);\r
+                               Figures.drawGabor(ref img3, isize / 8, 1 / lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * tfreq / 60);\r
+\r
+\r
+                               //img.centering().shift(0, -isize * 1.5).draw();\r
+                               //img2.centering().draw();\r
+                               //img3.centering().shift(0, isize * 1.5).draw();\r
+\r
+\r
+                               //foreach (var g in gabor1)\r
+                               for (int i = 0; i < gabor1.Length; i++)\r
+                               {\r
+                                       gabor1[i].wavelength = lambda;\r
+                                       gabor1[i].phase = (double)frames * 2.0 * Math.PI * tfreq / 60;\r
+                                       gabor1[i].contrast = contrast;\r
+                                       //g.wavelength2 = lambda * 2;\r
+                                       //g.phase2 = (double)frames * 2.0 * Math.PI * tfreq / 60;\r
+                                       //g.contrast2 = contrast / 2;\r
+                                       gabor1[i].draw();\r
+                               }\r
+\r
+                               if (!Mouse.left.pressed()) frames++;\r
+\r
+                               cnvs.flip();\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+\r
+/*\r
 ///+ Prefix linkto BasicCode1\r
 //// Lines for set up Psychlops environment\r
 using Psychlops;\r
@@ -70,6 +284,7 @@ namespace PsychlopsSilverlightApp
        }\r
 \r
 }\r
+ * */\r
 \r
 \r
 /*\r
@@ -539,72 +754,3 @@ using Psychlops;
        }\r
 }\r
 */\r
-\r
-\r
-/*\r
-using Psychlops;\r
-//Position Bias Program\r
-namespace PsychlopsSilverlightApp\r
-{\r
-\r
-    public class PsychlopsMain\r
-    {\r
-        Canvas cnvs;\r
-        Image img, img2, img3;\r
-        int isize = 40;        \r
-        int frames;\r
-        Psychlops.Widgets.Slider tfreq;\r
-        Psychlops.Widgets.Slider contrast;\r
-        Psychlops.Widgets.Slider lambda;\r
-               \r
-\r
-               \r
-        public void psychlops_main()\r
-        {\r
-            cnvs = new Canvas(300, 600);\r
-            Interval rng = new Interval();\r
-            tfreq = new Psychlops.Widgets.Slider("Temporal Frequency(Hz)", -5 <= rng <= 5, 3.0);\r
-            contrast = new Psychlops.Widgets.Slider("Contrast", 0.0 <= rng <= 1.0, 0.25);\r
-            lambda = new Psychlops.Widgets.Slider("Wave Length", 10.0 <= rng <= 120.0, 30);\r
-\r
-            img = new Image(isize * 2, isize * 2);\r
-            img2 = new Image(isize * 2, isize * 2);\r
-            img3 = new Image(isize * 2, isize * 2);\r
-\r
-                       var gabor1 = StaticFunctions.NewArray<Figures.ShaderGabor>(100);\r
-                       foreach(var g in gabor1)\r
-                       {\r
-                               g.setSigma(isize / 8).centering().shift(Math.random(300) - 150, Math.random(600) - 300);\r
-                               g.orientation = Math.random(2*Math.PI);\r
-                       }\r
-\r
-            while (true)\r
-                       {\r
-                cnvs.clear(new Color(0.5));\r
-\r
-                Figures.drawGabor(ref img, isize / 8, 1/lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * tfreq / 60);\r
-                               Figures.drawGabor(ref img2, isize / 8, 1 / lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * -tfreq / 60);\r
-                               Figures.drawGabor(ref img3, isize / 8, 1 / lambda, contrast, 0.5 * Math.PI, (double)frames * 2.0 * Math.PI * tfreq / 60);\r
-\r
-\r
-                //img.centering().shift(0, -isize * 1.5).draw();\r
-                //img2.centering().draw();\r
-                //img3.centering().shift(0, isize * 1.5).draw();\r
-\r
-\r
-                               foreach (var g in gabor1)\r
-                               {\r
-                                       g.wavelength = lambda;\r
-                                       g.phase = (double)frames * 2.0 * Math.PI * tfreq / 60;\r
-                                       g.contrast = contrast;\r
-                                       g.draw();\r
-                               }\r
-                \r
-                if (!Mouse.left.pressed()) frames++;\r
-\r
-                cnvs.flip();\r
-            }\r
-        }\r
-    }\r
-}\r
-*/
\ No newline at end of file