public virtual bool Intersects(IOctreeBoundingVolume volume) { var box = volume as BoundingBox; if (box != null) { return(Intersects(box)); } var sphere = volume as BoundingSphere; return(sphere != null && Intersects(sphere)); }
public IEnumerable <IOctreePoint> Query(IOctreeBoundingVolume volume) { if (!volume.Intersects(_boundary)) { yield break; } foreach (var point in _points) { if (volume.Contains(point)) { yield return(point); } } if (!IsDivided) { yield break; } foreach (var point in NorthEastBack.Query(volume)) { yield return(point); } foreach (var point in NorthWestBack.Query(volume)) { yield return(point); } foreach (var point in SouthEastBack.Query(volume)) { yield return(point); } foreach (var point in SouthWestBack.Query(volume)) { yield return(point); } foreach (var point in NorthEastFront.Query(volume)) { yield return(point); } foreach (var point in NorthWestFront.Query(volume)) { yield return(point); } foreach (var point in SouthEastFront.Query(volume)) { yield return(point); } foreach (var point in SouthWestFront.Query(volume)) { yield return(point); } }
public virtual bool Intersects(IOctreeBoundingVolume volume) { var box = volume as BoundingBox; return(box != null && Intersects(box)); }