我从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