Home > vbmeg > functions > common > boundary > vb_vertex_normal.m

vb_vertex_normal

PURPOSE ^

normal vector assigned for vertex

SYNOPSIS ^

function xxn = vb_vertex_normal(V,F,xxf)

DESCRIPTION ^

 normal vector assigned for vertex
  xxn = vb_vertex_normal(V,F,xxf)

 --- Input
 V : vertex of surface
 F : triangle patch index
 xxf  : normal vector of triangle
 --- Output
 xxn  : normal vector assigned for vertex

 Ver 1.0  by M. Sato  2004-2-10

 三角面の法線と頂点法線計算
  V(n, 1:3)  : 頂点の位置
  F(j, 1:3)  : 三角面3頂点のインデックス
 xxf : 3角面の法線ベクトル
 xxn : 頂点法線 = 頂点に隣接する三角面法線の平均

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function    xxn = vb_vertex_normal(V,F,xxf)
0002 % normal vector assigned for vertex
0003 %  xxn = vb_vertex_normal(V,F,xxf)
0004 %
0005 % --- Input
0006 % V : vertex of surface
0007 % F : triangle patch index
0008 % xxf  : normal vector of triangle
0009 % --- Output
0010 % xxn  : normal vector assigned for vertex
0011 %
0012 % Ver 1.0  by M. Sato  2004-2-10
0013 %
0014 % 三角面の法線と頂点法線計算
0015 %  V(n, 1:3)  : 頂点の位置
0016 %  F(j, 1:3)  : 三角面3頂点のインデックス
0017 % xxf : 3角面の法線ベクトル
0018 % xxn : 頂点法線 = 頂点に隣接する三角面法線の平均
0019 %
0020 % Copyright (C) 2011, ATR All Rights Reserved.
0021 % License : New BSD License(see VBMEG_LICENSE.txt)
0022 
0023 Npoint = size(V,1);      % 頂点数
0024 Npatch = size(F,1);
0025 
0026 % 頂点法線 = 頂点に隣接する三角面法線の平均
0027 xxn   = zeros(Npoint,3);    
0028 
0029 for n=1:Npatch,
0030     % 三角面3頂点インデックス
0031     j1=F(n,1);
0032     j2=F(n,2);
0033     j3=F(n,3);
0034     
0035     xxn(j1,:) = xxn(j1,:) + xxf(n,:);
0036     xxn(j2,:) = xxn(j2,:) + xxf(n,:);
0037     xxn(j3,:) = xxn(j3,:) + xxf(n,:);
0038 end;
0039 
0040 % 法線の正規化
0041 xxs = sqrt(sum(xxn.^2,2));
0042 xxs = max(xxs,eps);
0043 xxn = xxn./xxs(:,ones(1,3));

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005