0

我画了一个半圆,然后旋转它:

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]);

现在,我想从中心移动/移动半圆,使半圆改变位置,但我希望它也保持旋转完成。

谁能帮我?

4

3 回答 3

2

例如,在 x 方向移动 10 个单位,在 y 方向移动 5 个单位:

set(h,'XData',get(h,'XData')+10)
set(h,'YData',get(h,'YData')+5)

如您所见,它是通过修改 h 对象的属性来完成的

于 2013-07-17T11:50:49.213 回答
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)
于 2013-07-17T11:51:36.060 回答
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;
于 2013-07-17T12:03:15.010 回答