Psychtoolbox将绘制的方形改为菱形/菱形

时间:2016-01-27 00:37:40

标签: matlab psychtoolbox

我是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],但它不起作用。如果我想要钻石/菱形,不太确定如何指定[left,top,right,bottom]坐标。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

FrameRect函数只会构造直立的矩形。您可以从矩形创建纹理,然后在显示时旋转它。或者,您可以指定钻石每个边缘的坐标,然后使用' FramePoly'功能。例如:

presentAlert(createAlert("Title", message: "Your message here"))

答案 1 :(得分: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')