Matlab PLY表面网格上的测地线

时间:2014-04-29 03:18:07

标签: matlab shortest-path meshlab geodesic-sphere ply-file-format

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

最终,如果我能够以正确的方向获得它,那么仅仅绘制图形也可以。理想情况下,我会选择起点和终点,然后Matlab将以图形方式显示表面上的测地线,以后我可以找到它的长度。我愿意为此做一些编程,但希望有些人可能已经知道了。

1 个答案:

答案 0 :(得分: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模式以再次移动数据采集器:

enter image description here

您现在应该有c_info{1}.positionc_info{2}.position,它们是表面上的两个点。计算测地线是另一回事 - 看看文件交换,看看是否已经有了可以完成你已经拥有的数据类型的工作。