0001 function [Xpath, Npath] = get_shortest_path(parm, facefile)
0002
0003
0004
0005
0006
0007
0008 face = load(facefile);
0009 V = face.Vspm;
0010 F = face.F;
0011 xx = face.xx;
0012
0013
0014 ix_from = parm.probe_pair(:, 1);
0015 ix_to = parm.probe_pair(:, 2);
0016
0017 src_pos = parm.src_pos(ix_from, :);
0018 det_pos = parm.det_pos(ix_to, :);
0019
0020
0021 [Indx ,derr] = vb_find_nearest_point(V,src_pos);
0022 X1 = V(Indx,:);
0023 xx1 = xx(Indx,:);
0024
0025 [Indx ,derr] = vb_find_nearest_point(V,det_pos);
0026 X2 = V(Indx,:);
0027 xx2 = xx(Indx,:);
0028
0029
0030 xxD = vb_next_distance(F,V);
0031
0032 dmax = max(vb_cell_merge(xxD));
0033
0034
0035
0036
0037 Npair = size(src_pos,1);
0038 Xpath = cell(Npair,1);
0039 Npath = zeros(Npair,1);
0040
0041 for k=1:Npair
0042 V1 = X1(k,:);
0043 V2 = X2(k,:);
0044 xn = (xx1(k,:) + xx2(k,:))/2;
0045
0046
0047
0048
0049 Vpath = plane_cross_section(V,F,V1,V2,xn,dmax);
0050 Xpath{k} = Vpath;
0051 Npath(k) = size(Vpath,1);
0052 end
0053