フィギュアデータを再生成する方法がなくても、その中にデータを含むMATLAB図が残っていれば、それらを取得できます。
私は最初のサンプルのグラフィック・オブジェクト(リンクされた関数によって返されるpatch
、)を作成:今
R = 3 ; nFaces = 5 ;
tt = linspace(0,2*pi,nFaces+1).' ; tt(end) = [] ;
[x,y] = pol2cart(tt,zeros(nFaces,1)+R) ;
hp = patch(x,y,'b') ;
axis equal
をクリックします(図はアクティブフィギュアで提供あなたが確信したい場合は、フォーカスにそれを与える図に)、あなたはプロットされたデータをクエリすることができます。
まず、現在の図のaxes
に表示されるすべてのグラフィックオブジェクトのハンドルを取得する必要があります。
% get handle of all graphic objects in the current axes
hlist = get(gca,'Children')
hlist =
Patch with properties:
FaceColor: [0 0 1]
FaceAlpha: 1
EdgeColor: [0 0 0]
LineStyle: '-'
Faces: [1 2 3 4 5]
Vertices: [5x2 double]
私の場合は、1つのオブジェクトのみなので、無曖昧さがあります。返されたハンドルが複数ある場合は、patch
オブジェクトの中からオブジェクトを選択します(各オブジェクトを再生して、どれが何であるかを確認します)。
アクセスしたいオブジェクトが識別されると、回転することが簡単である:
% only one object in this case but if there was several in the list I
% would isolate the object I want to manipulate.
hp = hlist(1) ;
% to rotate the graphic object "hp", around axis Z ([0 0 1]), by 90 degrees.
rotate(hp ,[0 0 1] , 90)
または点の座標を取得する:
% to get the points coordinates:
pc = get(hp,'Vertices')
pc =
0.286474508437579 2.713525491562421 0
-2.566695040447882 0.640576474687264 0
-1.476881248439841 -2.713525491562421 0
2.049830265314998 -2.713525491562421 0
3.139644057323040 0.640576474687263 0
だけでも慎重に、私が検索した座標、X
、Y
とZ
の座標(列ns)は、回転がの後の座標です。元の座標が必要な場合は、回転をオブジェクトに適用する前にそれらを照会する必要があります。
もっと読み:
これは完全にフォーマットに依存します。あなたは私が恐れるよりも私たちに多くを与える必要があります。 – patrik
私は.stl形式でフォローする軌跡があり、https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-mのコードを使ってmatlabファイルに変換しました – user70299
これを質問。さらに、MATLABファイル交換のリンクをたどって、あなたがしようとしていることを知るだけで他の誰も望んでいないことを知りたくありません。これは、あなたが3票を得て閉じるためです。 – patrik