0

我有一个心脏的CT扫描,我正在设计一个位于它上面的设备。因此,为特定属性获取正确的长度非常重要。 CT扫描在MeshLab中分段,我的顾问给了我使用PLY_IO读取从MeshLab导出的层文件的代码。从这里,我有一张表面图。 surf(Map.X,Map.Y,Map.Z)输出3D模型。现在,我最想要的是能够通过图形窗口以图形方式选择点,并让Matlab告诉我这些点是什么,或者让我绘制测地线来确定它的长度。 问题:有没有人对我如何以简单的方式做到这一点有任何想法?Matlab上的测地线PLY表面网格

最终,只要在图上画图也可以,如果我可以把它放在正确的方向。理想情况下,我会选择开始点和结束点,然后Matlab将以图形方式显示表面上的测地线,以后我可以找到它的长度。我愿意为此编写一些编程,但希望有些东西你可能已经知道。

+0

要小心诸如“......希望有些东西你们可能已经知道了。”这非常接近“关闭原因”,因为您需要找到自己喜欢的工具和库。不要个人承担。堆栈溢出尝试保持专注于有针对性的问题和答案。允许对<<最喜欢的工具X>或者<最喜欢的库Y>的意见不符合该网站的目标。 – jww

回答

1

交互式提取表面点的一种方法是使用datacursormode。这里有一个如何得到两分一个简单的例子:

surf(peaks); 
dcm_obj = datacursormode(gcf); 
set(dcm_obj,'DisplayStyle','datatip',... 
    'SnapToDataVertex','off','Enable','on') 
disp('Select first point then press any key') 
pause       
c_info{1} = getCursorInfo(dcm_obj); 
disp('Select second point then press any key') 
pause       
c_info{2} = getCursorInfo(dcm_obj); 

请注意,如果您(或用户)的变化模式(例如,通过点击旋转按钮)以选择的时候,你将不得不切换回到datacursor模式再次移动datacursor:

enter image description here

你现在应该有c_info{1}.positionc_info{2}.position这是表面上的两个点。计算测地线是另一回事 - 看一下文件交换,看看有没有什么可以为你已有的数据类型做这项工作。