Search next-point index and distance [xxD, xxF, xxT]= vb_next_distance(F,V) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 自分の隣の最近傍点 ( 3角形を共有する点 ) を見つけて その番号を xxF へ 距離を xxD へ格納 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xxF{n} : 頂点 n の 隣接近傍頂点番号 xxD{n} : 頂点 n と 各隣接近傍点 との 距離 xxT{n} : 頂点 n の 隣接3角面番号 Ver 1.0 written by M. Sato 2003-3-15 Copyright (C) 2011, ATR All Rights Reserved. License : New BSD License(see VBMEG_LICENSE.txt)
0001 function [xxD, xxF, xxT]= vb_next_distance(F,V) 0002 % Search next-point index and distance 0003 % [xxD, xxF, xxT]= vb_next_distance(F,V) 0004 % 0005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0006 % 自分の隣の最近傍点 ( 3角形を共有する点 ) を見つけて 0007 % その番号を xxF へ 距離を xxD へ格納 0008 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0009 % 0010 % xxF{n} : 頂点 n の 隣接近傍頂点番号 0011 % xxD{n} : 頂点 n と 各隣接近傍点 との 距離 0012 % xxT{n} : 頂点 n の 隣接3角面番号 0013 % 0014 % Ver 1.0 written by M. Sato 2003-3-15 0015 % 0016 % Copyright (C) 2011, ATR All Rights Reserved. 0017 % License : New BSD License(see VBMEG_LICENSE.txt) 0018 0019 Npoint = size(V,1); % number of dipoles 0020 Npatch = size(F,1); % number of patch 0021 xxF = cell(Npoint,1); 0022 xxD = cell(Npoint,1); 0023 xxT = cell(Npoint,1); 0024 0025 % 3角面に関するループ 0026 for j=1:Npatch, 0027 % 3角面の頂点インデックス 0028 k = F(j,:); 0029 0030 % 各頂点の近傍点リストに他の頂点を加える 0031 xxF{k(1)} = [ xxF{k(1)} ; k(2) ; k(3)]; 0032 xxF{k(2)} = [ xxF{k(2)} ; k(3) ; k(1)]; 0033 xxF{k(3)} = [ xxF{k(3)} ; k(1) ; k(2)]; 0034 0035 % 各頂点の3角面リストに3角面番号を加える 0036 xxT{k(1)} = [ xxT{k(1)} ; j ]; 0037 xxT{k(2)} = [ xxT{k(2)} ; j ]; 0038 xxT{k(3)} = [ xxT{k(3)} ; j ]; 0039 end; 0040 0041 for i=1:Npoint, 0042 0043 % 近傍点リストの重複を除く 0044 nextix = unique(xxF{i}); 0045 xxF{i} = nextix; 0046 Va = V(i,:); 0047 Vb = V(nextix,:); 0048 0049 % Distance from vertex i to next points xxF{i} 0050 dd = (Va(1)-Vb(:,1)).^2 +(Va(2)-Vb(:,2)).^2 +(Va(3)-Vb(:,3)).^2 ; 0051 0052 xxD{i} = sqrt(dd); 0053 end