DotDemo

DotDemo(showSprites, waitframes)

showSprites = 0 のとき、もしくは引数が指定されていないとき、ドットを描画します。

showSprites = 1 のとき、ドットの代わりに顔文字「 :) 」を90度回転させたものが呈示されます。これはスプライトのデモです。

showSprites = 2 のとき、ドットの代わりに四角形を描画します。アンチエイリアスの参考にもなるはずです。

waitframesは、あるフレームから次のフレームに切り替わるまでのフレーム数です。この値が大きいと、ドットがゆっくり動きます。

if differentsizes>0  % drawing large dots is a bit slower
        ndots=round(ndots/5);
end

様々なサイズのドットを描画する場合は時間がかかるため、ドットの個数を5分の1に減らしています。

Screen('BlendFunction', w, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

各ドットをなめらかな(ギザギザしてない)円として描画するためにアルファブレンディング(アンチエイリアシング)を有効にしています。

fps=Screen('FrameRate',w);      % frames per second

リフレッシュレート(1秒間に何回画面を書き換えるか)を取得しています。

ifi=Screen('GetFlipInterval', w);

1フレームを書き換えるのに要する時間(inter frame interval)を取得しています。単位は「秒」です。

if fps==0
    fps=1/ifi;
end;

fpsを正しく取得できないことがあるようで、そのときのためにifiから計算しています。

Priority(MaxPriority(w));

MatlabがCPUを占有する時間を設定しています。詳しくは help Priority をご覧ください。

ppd = pi * (rect(3)-rect(1)) / atan(mon_width/v_dist/2) / 360;

視角の大きさからピクセルの値に変換するために、視角1度あたりのピクセル数を計算しています。実際の環境に合わせて、ディスプレイの横幅(mon_width)および観察距離(v_dist)を測定する必要があります。