0001 function areas = meshFaceAreas(vertices, faces)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 if isnumeric(faces)
0023
0024 nf = size(faces, 1);
0025 areas = zeros(nf, 1);
0026 if size(vertices, 2) == 2
0027
0028 for f = 1:nf
0029 areas(f,:) = polygonArea(vertices(faces(f,:), :));
0030 end
0031 else
0032
0033 if size(faces, 2) == 3
0034
0035 v1 = vertices(faces(:,1), :);
0036 v12 = vertices(faces(:,2), :) - v1;
0037 v13 = vertices(faces(:,3), :) - v1;
0038 areas = vectorNorm3d(crossProduct3d(v12, v13))/2;
0039
0040 else
0041
0042 for f = 1:nf
0043 areas(f) = polygonArea3d(vertices(faces(f,:), :));
0044 end
0045 end
0046 end
0047
0048 else
0049
0050 nf = length(faces);
0051 areas = zeros(nf, 1);
0052 if size(vertices, 2) == 2
0053
0054 for f = 1:nf
0055 areas(f) = polygonArea(vertices(faces{f}, :));
0056 end
0057 else
0058
0059 for f = 1:nf
0060 areas(f) = polygonArea3d(vertices(faces{f}, :));
0061 end
0062 end
0063 end
0064