Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
    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);
        }
    }
Ejemplo n.º 3
0
        public virtual bool Intersects(IOctreeBoundingVolume volume)
        {
            var box = volume as BoundingBox;

            return(box != null && Intersects(box));
        }