/// <summary>
 /// All points inside convex hull (including boundary).
 /// </summary>
 public static IEnumerable <Chunk> QueryPointsInsideConvexHull(
     this IPointCloudNode self, Hull3d query, int minCellExponent = int.MinValue
     )
 => QueryPoints(self,
                n => query.Contains(n.BoundingBoxExactGlobal),
                n => !query.Intersects(n.BoundingBoxExactGlobal),
                p => query.Contains(p),
                minCellExponent);
 /// <summary>
 /// Counts points inside convex hull.
 /// </summary>
 internal static long CountPointsInsideConvexHull(
     this IPointCloudNode self, Hull3d query, int minCellExponent = int.MinValue
     )
 => CountPoints(self,
                n => query.Contains(n.BoundingBoxExactGlobal),
                n => !query.Intersects(n.BoundingBoxExactGlobal),
                p => query.Contains(p),
                minCellExponent);
 /// <summary>
 /// Counts points outside convex hull (approximately).
 /// Result is always equal or greater than exact number.
 /// </summary>
 internal static long CountPointsApproximatelyOutsideConvexHull(
     this PointSetNode self, Hull3d query, int minCellExponent = int.MinValue
     )
 => CountPointsApproximately(self,
                             n => !query.Intersects(n.BoundingBox),
                             n => query.Contains(n.BoundingBox),
                             minCellExponent);