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

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 に答える
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 に答える