0

私はpsychtoolboxが初めてで、フレーム付きの正方形をひし形/ひし形に回転/描画しようとしていますが、それがどのように機能するかがよくわかりません。これが私のコードです:

AssertOpenGL;
screenNo  = max(Screen('Screens')); 
screenRes = [0 0 640 480];          
Screen('Preference', 'SkipSyncTests', 2); 

ListenChar(2);

[win, rect] = Screen('OpenWindow', screenNo, [0 0 0], screenRes);
[width, height]=Screen('WindowSize', win); 
[x,y] = RectCenter(rect); 
baseRect = [0 0 250 250]; 
centeredRect = CenterRectOnPointd(baseRect, x, y); 

Screen('FrameRect', win, [255 255 255], centeredRect, 3);
Screen('Flip', win);

KbWait;
sca; 

baseRect を [320 115 320 365] に変更しようとしましたが、うまくいきません。菱形/ひし形が必要な場合、[左、上、右、下] 座標を指定する方法がよくわかりません。

助けてくれてありがとう。

4

2 に答える 2

0

これらの関数を使用して、psychtoolbox によって描画されたプリミティブを変換できます。

Screen('glPushMatrix', windowPtr);
Screen('glPopMatrix', windowPtr);
Screen('glLoadIdentity', windowPtr);
Screen('glTranslate', windowPtr, tx, ty [, tz]);
Screen('glScale', windowPtr, sx, sy [, sz]);
Screen('glRotate', windowPtr, angle, [rx = 0], [ry = 0] ,[rz = 1]);

その後、使い続けることができますScreen('FrameRect')

于 2016-04-16T20:23:29.070 に答える
0

FrameRect 関数は、直立した長方形のみを作成します。長方形からテクスチャを作成し、表示上で回転させることができます。または、ひし形の各エッジの座標を指定し、'FramePoly' 関数を使用して表示することもできます。例えば:

AssertOpenGL;
screenNo  = max(Screen('Screens')); 
screenRes = [0 0 640 480];          
Screen('Preference', 'SkipSyncTests', 2); 

ListenChar(2);

[win, rect] = Screen('OpenWindow', screenNo, [0 0 0], screenRes);
[width, height]=Screen('WindowSize', win); 
[x,y] = RectCenter(rect); 

% compute poly coordinates
polyWidth = 250;
polyHeight = 250;
xCoord = [x, x - (polyWidth/2), x, x + (polyWidth/2)]';
yCoord = [y + (polyHeight /2), y, y - (polyHeight /2), y]';
polyCoords = [xCoord yCoord];

Screen('FramePoly', win, [255 255 255], polyCoords, 3);
Screen('Flip', win);

KbWait;
sca; 
于 2016-01-27T05:02:30.703 に答える