0001 function omega = vb_solid_angle_check(V,F)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 NF = size(F,1);
0014 NV = size(V,1);
0015
0016
0017 x1 = V(F(:,1),:);
0018 x2 = V(F(:,2),:);
0019 x3 = V(F(:,3),:);
0020
0021
0022 x0 = sum(V,1)/NV;
0023 xn = x0( ones(NF,1) ,:);
0024
0025
0026 xa = x1 - xn;
0027 xb = x2 - xn;
0028 xc = x3 - xn;
0029
0030
0031 abc = sum(xa.*vb_cross2(xb,xc), 2);
0032
0033 ra = sqrt(sum(xa.^2,2));
0034 rb = sqrt(sum(xb.^2,2));
0035 rc = sqrt(sum(xc.^2,2));
0036
0037 ya = sum(xb.*xc,2);
0038 yb = sum(xc.*xa,2);
0039 yc = sum(xa.*xb,2);
0040
0041
0042 omega = sum(atan(abc./(ra.*rb.*rc + ra.*ya + rb.*yb + rc.*yc)));
0043 omega = omega/(2*pi);