Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        internal double ComputeFaceArea(int faceId)
        {
            var normal = new double[3];

            ComputeFaceNormal(faceId, ref normal, false);
            return(0.5 * MxVectorOps.Length3(normal));
        }