Esempio n. 1
0
 /// <summary>
 /// Return a square envelope containing the argument envelope,
 /// whose extent is a power of two and which is based at a power of 2.
 /// </summary>
 /// <param name="itemInterval"></param>
 public void ComputeKey(Interval itemInterval)
 {
     _level = ComputeLevel(itemInterval);
     _interval = new Interval();
     //_interval = Interval.Create();
     ComputeInterval(_level, itemInterval);
     // MD - would be nice to have a non-iterative form of this algorithm
     while (!_interval.Contains(itemInterval))
     {
         _level += 1;
         ComputeInterval(_level, itemInterval);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="interval"></param>
 /// <returns></returns>
 public static int ComputeLevel(Interval interval)
 {
     double dx = interval.Width;
     int level = DoubleBits.GetExponent(dx) + 1;
     return level;
 }
Esempio n. 3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="interval"></param>
 public Key(Interval interval)
 {
     ComputeKey(interval);
 }
Esempio n. 4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="level"></param>
 /// <param name="itemInterval"></param>
 private void ComputeInterval(int level, Interval itemInterval)
 {
     var size = DoubleBits.PowerOf2(level);
     _pt = Math.Floor(itemInterval.Min / size) * size;
     _interval.Init(_pt, _pt + size);
     //_interval = Interval.Create(_pt, _pt + size);
 }
Esempio n. 5
0
 /// <summary>
 /// Creates a new interval instance, setting <see cref="Min"/>=<paramref name="interval.Min"/> and <see cref="Max"/>=<paramref name="interval.Max"/>.
 /// </summary>
 /// <param name="interval"></param>
 public Interval(Interval interval)
 {
     Init(interval.Min, interval.Max);
 }
Esempio n. 6
0
 /// <summary>
 /// Function to test if this <see cref="Interval"/> contains <paramref name="interval"/>.
 /// </summary>
 /// <remarks>This is more rigid than <see cref="Overlaps(Interval)"/></remarks>
 /// <param name="interval">The interval to test</param>
 /// <returns><c>true</c> if this interval contains <paramref name="interval"/></returns>
 public bool Contains(Interval interval)
 {
     return Contains(interval.Min, interval.Max);
 }
Esempio n. 7
0
 /// <summary>
 /// Function to test if this <see cref="Interval"/> overlaps <paramref name="interval"/>.
 /// </summary>
 /// <param name="interval">The interval to test</param>
 /// <returns><c>true</c> if this interval overlaps <paramref name="interval"/></returns>
 public bool Overlaps(Interval interval)
 {
     return Overlaps(interval.Min, interval.Max);
 }
Esempio n. 8
0
 /// <summary>
 /// Method to expand this interval to contain <paramref name="interval"/>.
 /// </summary>
 /// <param name="interval">The interval to contain.</param>
 public void ExpandToInclude(Interval interval)
 {
     if (interval.Max > Max) 
         Max = interval.Max;
     if (interval.Min < Min) 
         Min = interval.Min;
 }
Esempio n. 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="interval"></param>
 /// <returns></returns>
 protected abstract bool IsSearchMatch(Interval interval);
Esempio n. 10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="interval"></param>
 public Key(Interval interval)
 {
     ComputeKey(interval);
 }