/// <summary> /// コンストラクタ、変換前と変換後の範囲を指定して初期化する /// </summary> /// <param name="rangeBefore">変換前範囲</param> /// <param name="rangeAfter">変換後範囲</param> public TransformLineard(Ranged rangeBefore, Ranged rangeAfter) { double sizeb = rangeBefore.Size; double sizea = rangeAfter.Size; if (sizea == 0.0 || sizeb == 0.0) { StringBuilder sb = new StringBuilder(); sb.AppendLine("TransformLineard.TransformLineard(Ranged rangeBefore, Ranged rangeAfter) に渡された引数が無効です。"); sb.AppendLine("変換前範囲または変換後範囲のサイズが 0 です。"); sb.AppendFormat("rangeBefore.Size={0}\n", sizeb); sb.AppendFormat("rangeAfter.Size={0}\n", sizea); throw new Exception(sb.ToString()); } this.Scale = sizea / sizeb; this.Translate = rangeAfter.V1 - rangeBefore.V1 * this.Scale; }
/// <summary> /// 指定された範囲と接触しているかどうか調べる /// </summary> /// <param name="r">接触しているかどうか調べる範囲</param> /// <returns>true=接触している、false=接触していない</returns> /// <remarks>呼び出し時にはV1<=V2でなければならない</remarks> public bool CheckIntersect(ref Ranged r) { return(this.V1 <= r.V2 && r.V1 <= this.V2); }
/// <summary> /// 指定された範囲を自分の範囲内に完全に含めているかどうかどうか調べる /// </summary> /// <param name="r">範囲内かどうか調べる範囲</param> /// <returns>true=範囲内 false=範囲外</returns> /// <remarks>呼び出し時にはV1<=V2でなければならない</remarks> public bool CheckInclusion(Ranged r) { return(this.V1 <= r.V1 && r.V2 <= this.V2); }