Isosurface.ManifoldDC.MDC3D.GetNormalQ C# (CSharp) Method

GetNormalQ() private method

private GetNormalQ ( List verts ) : Vector3
verts List
return Vector3
        private Vector3 GetNormalQ(List<VertexPositionColorNormalNormal> verts, params int[] indexes)
        {
            Vector3 a = verts[indexes[2]].Position - verts[indexes[1]].Position;
            Vector3 b = verts[indexes[2]].Position - verts[indexes[0]].Position;
            Vector3 c = Vector3.Cross(a, b);

            if (indexes.Length == 6)
            {
                a = verts[indexes[5]].Position - verts[indexes[4]].Position;
                b = verts[indexes[5]].Position - verts[indexes[3]].Position;
                Vector3 d = Vector3.Cross(a, b);

                //c.Normalize();
                if (float.IsNaN(c.X))
                    c = Vector3.Zero;
                if (float.IsNaN(d.X))
                    d = Vector3.Zero;

                c += d;
                c /= 2.0f;
            }

            c.Normalize();

            return -c;
        }