Пример #1
0
        public static IEnumerable <(Face face, double distanceFromOrign)> GetPlanerFaces(this Mesh mesh, Vector3 normal, double distanceFromOrigin, double normalTolerance = 0, double distanceTolerance = 0)
        {
            var normalToleranceSquared = normalTolerance * normalTolerance;

            foreach (var facePlane in mesh.FacePlanes())
            {
                if (Math.Abs(facePlane.distanceFromOrigin - distanceFromOrigin) <= distanceTolerance &&
                    (facePlane.face.Normal - normal).LengthSquared <= normalToleranceSquared)
                {
                    yield return(facePlane);
                }
            }
        }