/** Return the interval with elements from this not in other; * other must not be totally enclosed (properly contained) * within this, which would result in two disjoint intervals * instead of the single one returned by this method. */ public virtual Interval DifferenceNotProperlyContained(Interval other) { Interval diff = null; // other.a to left of this.a (or same) if (other.StartsBeforeNonDisjoint(this)) { diff = Interval.Create(Math.Max(this.a, other.b + 1), this.b); } // other.a to right of this.a else if (other.StartsAfterNonDisjoint(this)) { diff = Interval.Create(this.a, other.a - 1); } return(diff); }
/** Return the interval with elements from this not in other; * other must not be totally enclosed (properly contained) * within this, which would result in two disjoint intervals * instead of the single one returned by this method. */ public virtual Interval DifferenceNotProperlyContained( Interval other ) { Interval diff = null; // other.a to left of this.a (or same) if ( other.StartsBeforeNonDisjoint( this ) ) { diff = Interval.Create( Math.Max( this.a, other.b + 1 ), this.b ); } // other.a to right of this.a else if ( other.StartsAfterNonDisjoint( this ) ) { diff = Interval.Create( this.a, other.a - 1 ); } return diff; }