how to rotate a graphic object using a button press

5 次查看(过去 30 天)
Hi, im trying to rotate a graphic object using a button press but i can understand what im doing wrong. the code is running but not responding to keypress. basicaly im drawing a 3d star in different colors and i want to allow it to rotete in one direction when pressing + and in the oter direction if pressing any other key. and end if i press escape. I have a feeling im not using KeyPressFcn right but couldnt understand what im doing wrong.
here is my code if true % code function main() clear all; clc; close all;
fig=figure('KeyPressFcn',@keypress); ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],... 'ZLim',[-1.5 1.5]); view(3); grid off; axis off ; whitebg([0 .5 .6]); daspect([1,1,1]); [x, y, z] = cylinder([.2 0]); h(1) = surface(x,y,z,'FaceColor','red'); h(2) = surface(x,y,-z,'FaceColor','green'); h(3) = surface(z,x,y,'FaceColor','blue'); h(4) = surface(-z,x,y,'FaceColor','cyan'); h(5) = surface(y,z,x,'FaceColor','magenta'); h(6) = surface(y,-z,x,'FaceColor','yellow'); t = hgtransform('Parent',ax); set(h,'Parent',t) set(gcf,'Renderer','opengl') drawnow
Rz = eye(4); flag=0; angle=0; while flag==0 % Z-axis rotation matrix Rz = makehgtform('zrotate',angle); % Concatenate the transforms and % set the hgtransform Matrix property set(t,'Matrix',Rz) waitforbuttonpress ; drawnow; end
function keypress(src,event) fprintf('im here') if strcmp(event.Character,'escape') flag=1; else if event.Character == '+' angle=angle+5; else angle=angle-5; end end end end end

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graphics Object Programming 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by