/// <summary> /// Count points approximately NOT within maxDistance of given plane. /// Result is always equal or greater than exact number. /// Faster than CountPointsNotNearPlane. /// </summary> public static long CountPointsApproximatelyNotNearPlane( this IPointCloudNode node, Plane3d plane, double maxDistance, int minCellExponent = int.MinValue ) => CountPointsApproximately(node, n => !node.BoundingBoxExactGlobal.Intersects(plane, maxDistance), n => plane.Contains(maxDistance, node.BoundingBoxExactGlobal), minCellExponent );
/// <summary> /// All points NOT within maxDistance of given plane. /// </summary> public static IEnumerable <Chunk> QueryPointsNotNearPlane( this IPointCloudNode node, Plane3d plane, double maxDistance, int minCellExponent = int.MinValue ) => QueryPoints(node, n => !node.BoundingBoxExactGlobal.Intersects(plane, maxDistance), n => plane.Contains(maxDistance, node.BoundingBoxExactGlobal), p => Math.Abs(plane.Height(p)) > maxDistance, minCellExponent );
/// <summary> /// All points within maxDistance of given plane. /// </summary> public static IEnumerable <Chunk> QueryPointsNearPlane( this PointSetNode node, Plane3d plane, double maxDistance, int minCellExponent = int.MinValue ) => QueryPoints(node, n => plane.Contains(maxDistance, node.BoundingBox), n => !node.BoundingBox.Intersects(plane, maxDistance), p => Math.Abs(plane.Height(p)) <= maxDistance, minCellExponent );
/// <summary> /// Count points within maxDistance of given plane. /// </summary> public static long CountPointsNearPlane( this IPointCloudNode node, Plane3d plane, double maxDistance, int minCellExponent = int.MinValue ) => CountPoints(node, n => plane.Contains(maxDistance, node.BoundingBoxExactGlobal), n => !node.BoundingBoxExactGlobal.Intersects(plane, maxDistance), p => Math.Abs(plane.Height(p)) <= maxDistance, minCellExponent );
/// <summary> /// Count points NOT within maxDistance of given plane. /// </summary> public static long CountPointsNotNearPlane( this PointSetNode node, Plane3d plane, double maxDistance, int minCellExponent = int.MinValue ) => CountPoints(node, n => !node.BoundingBox.Intersects(plane, maxDistance), n => plane.Contains(maxDistance, node.BoundingBox), p => Math.Abs(plane.Height(p)) > maxDistance, minCellExponent );