/// <summary>指定した Range の範囲がこの Range の範囲内に収まるようにオフセットする</summary> public void DragIn(ref Range value) { if (value.Distance > this.Distance) { value = this; } else if (value.Min < this.Min) { value.Offset(this.Min - value.Min); } else if (value.Max > this.Max) { value.Offset(this.Max - value.Max); } }
/// <summary>value を この Range から target で指定した範囲へ投影する</summary> public int Projection(int value, Range target) { return (value - this.Min) * this.Distance / target.Distance + target.Min; }
/// <summary>Min <= value.Min && value.Max <= Max であるか否かを返す</summary> public bool Contains(Range value) { return (Min <= value.Min && value.Max <= Max); }