旋转并移动半圆Matlab

时间:2013-07-17 11:26:24

标签: matlab rotation move

我绘制了一个半圆,我将其旋转:

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

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

谁能帮帮我?

3 个答案:

答案 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;