Ускоряющее колесо - psychtoolbox в MATLAB - PullRequest
0 голосов
/ 10 апреля 2010

Я пытаюсь написать код, который покажет ускоряющее колесо. Пока пользователь нажимает «а», колесо должно ускоряться против часовой стрелки. Дело в том, что он вращается в правильном направлении, но не ускоряется. Это код, который я использую (в PTB-3 и Windows XP):

img=imread('c:\images.jpg');  
[yimg,ximg,z]=size(img);  
rot_spd = 1;  
larrow = KbName('a'); % modify this for Windows  
rarrow = KbName('b');  
[w,rect]=Screen('OpenWindow',0,[0 0 0]);  
sx = 400; % desired x-size of image (pixels)  
sy = yimg*sx/ximg; % desired y-size--keep proportional  
t = Screen('MakeTexture',w,img);  
bdown=0;  
th = 0; % initial rotation angle (degrees)  
HideCursor  
while(~any(bdown)) % exit loop if mouse button is pressed  
    [x,y,bdown]=GetMouse;  
    [keyisdown,secs,keycode] = KbCheck;    
    if(keycode(larrow))  
        th = th - rot_spd-1; % accelerate counterclockwise  
        th  
    end  
    if(keycode(rarrow))  
        th = th + rot_spd+1; % accelerate clockwise  
        th  
    end  
    destrect=[x-sx/2,y-sy/2,x+sx/2,y+sy/2];  
    Screen('DrawTexture',w,t,[],destrect,th);  
    Screen('Flip',w);   
end  
Screen('Close',w)   
ShowCursor   

Если у кого-нибудь есть идея, почему он не ускоряется, я очень признателен.

1 Ответ

1 голос
/ 01 июля 2011
if(keycode(larrow))  
    th = th - rot_spd-1; % accelerate counterclockwise  
    th  
end  
if(keycode(rarrow))  
    th = th + rot_spd+1; % accelerate clockwise  
    th  
end 

Этот код влияет на th ровно на один "цикл". Вместо этого вам следует изменить скорость вращения , чтобы скорость вращения влияла на угол.

Попробуйте это:

if(keycode(larrow))  
    rot_spd-=1; % accelerate counterclockwise  
    th  
end
if(keycode(rarrow))  
    rot_spd+=1; % accelerate clockwise  
    th  
end
the+=rot_speed;
...