2016-08-19 73 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 – user70299

+1

中的代碼將其轉換爲matlab文件好吧,試着把它放在題。此外,我不想跟隨一個MATLAB文件交換的鏈接,只是爲了知道你試圖做什麼,所以沒有人想要。這就是爲什麼你有三張選票關閉。 – 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] 

在我的情況下,只有一個對象,所以不會產生歧義。如果返回了多個句柄,請在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 

只是要小心,我檢索到的座標,5點(線)用X,YZ座標(柱ns)的座標的旋轉。如果您需要原始座標,則必須在將旋轉應用到對象之前查詢它們。


更多讀數: