internal double ComputeFacePerimeter(int faceId, bool[] flags) { var perim = 0.0; var face = Face(faceId); for (var i = 0; i < 3; i++) { if (flags != null) { if (!flags[i]) { continue; } } var vi = Vertex(face[i]); var vj = Vertex(face[(i + 1) % 3]); var diff = new double[3]; MxVectorOps.Sub3(ref diff, vi.Pos, vj.Pos); perim += MxVectorOps.Length3(diff); } return(perim); }
internal double ComputeFaceArea(int faceId) { var normal = new double[3]; ComputeFaceNormal(faceId, ref normal, false); return(0.5 * MxVectorOps.Length3(normal)); }