我绘制了一个半圆,我将其旋转:
t=linspace(0,pi,1000);
x=r*cos(t);
y=r*sin(t);
h=plot(-2+x,y);
rotate(h,[0 0 -1],1,[0.5 3.71 0]);
现在,我想从中心移动/移动半圆,这样半圆会改变位置,但我希望它也保持旋转完成。
谁能帮帮我?
答案 0 :(得分:2)
例如,在x方向上移动10个单位,在y方向上移动5个单位:
set(h,'XData',get(h,'XData')+10)
set(h,'YData',get(h,'YData')+5)
如您所见,它是通过修改h对象的属性
来完成的答案 1 :(得分:0)
忽略我的上述评论,您可以在绘制数据后实际移动数据。只要您拥有创建的图的句柄
,就可以修改XData和YData值做这样的事情
clc; close all; clear all;
t=linspace(0,pi,1000);
r = 5
x=r*cos(t);
y=r*sin(t);
h=plot(-2+x,y);
rotate(h,[0 0 -1],1,[0.5 3.71 0]);
xShift = 5;
yShift = 5;
set(h,'XData',get(h,'XData')+xShift)
set(h,'YData',get(h,'YData')+yShift)
答案 2 :(得分:0)
只是展示hgtransform的另一个答案,其他人也会运作良好。
t=linspace(0,pi,1000);
x=r*cos(t);
y=r*sin(t);
h=plot(-2+x,y);
rotate(h,[0 0 -1],1,[0.5 3.71 0]);
hgt=hgtransform('parent',gca);
set(h,'parent',hgt);
Tx = makehgtform('translate',[10 -5 0]); % translate +10 x, -5 y, 0 z
set(hgt,'Matrix',Tx);
drawnow;
您也可以使用hgtranform同时进行旋转,但可能需要一些摆弄才能让轴原点像上面一样工作:
RxTx = makehgtform(xrotate',0.5,'yrotate',3.71,'translate',[10 -5 0]);
set(hgt,'Matrix',RxTx);
drawnow;