解説3

ここでは、凝視点を描画するテクニックについて説明します。

FixCr=ones(20,20)*255;
FixCr(10:11,:)=0;
FixCr(:,10:11)=0; %try imagesc(FixCr) to display the result in Matlab
fixcross = Screen('MakeTexture',expWin,FixCr);

この部分は凝視点の十字マークの描画部分になります。行列の考え方に慣れるまでは分かりにくい部分ですので、表を用いながら説明したいと思います。(ただし、表がFireFox 3.5.2では全部見えるのですが、Internet Explorer 8.0 では全部見えない場合があります。表をクリックすると拡大して見れます。)

では説明に入ります。

FixCr=ones(20,20)*255;

でできる行列FixCrは次の表のようになります。(青い部分は行番号、黄色い部分は列番号で、FixCrには含まれません)

次に

FixCr(10:11,:)=0;

をしています。FixCrの10行目と11行目に0を代入するという意味です。その結果FixCrは次のようになります。

10行目と11行目のすべての列が0になっていますね。

ここで255と0の意味についてご説明しますと、255が白を0が黒を表すというお約束があるのです。つまり、今のFixCrは白い正方形(20×20)の真ん中に水平の黒い線分が描かれているような状況なのです。

さて、プログラムの次の行は

FixCr(:,10:11)=0;

となっています。今度は10列目と11列目に0を代入します。

その結果のFixCrは次のようになります。

分かりやすいように、0を黒で表示してみました。

もうお分かりかと思いますが、これは凝視点の形(十字マーク)になっているわけです。

fixcross = Screen('MakeTexture',expWin,FixCr);

でFixCrの行列の内容を、Screen('DrawTexture') で使えるような情報(fixcross)に変換しています。

Screen('MakeTexture')をご参照ください。

※上記の説明はテクスチャを使った凝視点の描画になりますが、コメント部分に描いてあるようにオフスクリーンを使って凝視点を描くこともできます。ただし、Screen('MakeTexture?')を見てみると、オフスクリーンよりもテクスチャを使ったほうが描画が速いようです。

解説3はここまで。