2016-08-19 1 views
0

CADデータから取り込まれたグラフィックをMATLABで開いています。私がしたいことは、図を90度回転させ、図のように軸を変更することです。定義済みの軸を変更する

enter image description here

私はSTLフォーマットの図を保存し、私はMATLABのフィギュアとしてそれを開くには、次のリンクのコードを使用して。

https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m

質問:

  1. 私は数字を再生するための任意の関数またはmファイルを持っていません。図の軸をどのように回転させることができますか?

  2. 図の中のすべてのポイントの位置を取得するにはどうすればよいですか?

ありがとうございます。

+0

これは完全にフォーマットに依存します。あなたは私が恐れるよりも私たちに多くを与える必要があります。 – patrik

+0

私は.stl形式でフォローする軌跡があり、https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-mのコードを使ってmatlabファイルに変換しました – user70299

+1

これを質問。さらに、MATLABファイル交換のリンクをたどって、あなたがしようとしていることを知るだけで他の誰も望んでいないことを知りたくありません。これは、あなたが3票を得て閉じるためです。 – patrik

答えて

0

フィギュアデータを再生成する方法がなくても、その中にデータを含む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 

pentagon


をクリックします(図はアクティブフィギュアで提供あなたが確信したい場合は、フォーカスにそれを与える図に)、あなたはプロットされたデータをクエリすることができます。

まず、現在の図の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) 

pentagon rotated

または点の座標を取得する:

% 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 

だけでも慎重に、私が検索した座標、XYZの座標(列ns)は、回転がの後の座標です。元の座標が必要な場合は、回転をオブジェクトに適用する前にそれらを照会する必要があります。


もっと読み:

  • rotate コマンド。
  • patch オブジェクトです。
関連する問題