我從CAD數據中獲取圖形,並在MATLAB中打開它。我想要做的事情是旋轉90度的數字,並如圖所示更改軸。更改預定義軸
我保存在STL格式的圖形,並在下面的鏈接我打開它作爲一個matlab圖使用的代碼。
https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m
問題:
我沒有任何功能或M檔再生的身影。我怎樣才能旋轉圖中的軸?
如何獲得圖中的所有點位置?
在此先感謝。
我從CAD數據中獲取圖形,並在MATLAB中打開它。我想要做的事情是旋轉90度的數字,並如圖所示更改軸。更改預定義軸
我保存在STL格式的圖形,並在下面的鏈接我打開它作爲一個matlab圖使用的代碼。
https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m
問題:
我沒有任何功能或M檔再生的身影。我怎樣才能旋轉圖中的軸?
如何獲得圖中的所有點位置?
在此先感謝。
如果您沒有辦法重新生成圖形數據,但仍然有一個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]
在我的情況下,只有一個對象,所以不會產生歧義。如果返回了多個句柄,請在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
只是要小心,我檢索到的座標,5點(線)用X
,Y
和Z
座標(柱ns)的座標後的旋轉。如果您需要原始座標,則必須在將旋轉應用到對象之前查詢它們。
更多讀數:
這完全取決於格式。你需要給我們比你害怕的更多。 – patrik
我有一個追蹤.stl格式的軌跡,我使用https://de.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m – user70299
中的代碼將其轉換爲matlab文件好吧,試着把它放在題。此外,我不想跟隨一個MATLAB文件交換的鏈接,只是爲了知道你試圖做什麼,所以沒有人想要。這就是爲什麼你有三張選票關閉。 – patrik