/// <summary>
 /// 辺が同じものか?
 ///  Noは比較しない. 辺の長さと、開始位置リストをチェックする
 /// </summary>
 /// <param name="tagt"></param>
 /// <returns></returns>
 public bool EqualEdge(Edge_Ver_1_2 tagt)
 {
     bool equals = false;
     if (!this.Delta.Equals(tagt.Delta))
     {
         return equals;
     }
     for (int ino = 0; ino < this.Points.Length; ino++)
     {
         if (Points[ino].X != tagt.Points[ino].X)
         {
             return equals;
         }
         if (Points[ino].Y != tagt.Points[ino].Y)
         {
             return equals;
         }
     }
     equals = true;
     return equals;
 }
 /// <summary>
 /// 単純にPoints[0]とPoints[1]を入れ替える
 /// Points[0]に始点、Points[1]に終点座標を入れた場合、こちらを使用。
 /// (このインスタンス自身は変更しない)
 /// </summary>
 /// <returns></returns>
 public Edge_Ver_1_2 GetSimpleSwap()
 {
     Edge_Ver_1_2 e = new Edge_Ver_1_2();
     e.No = this.No;
     e.Delta = new Size(-this.Delta.Width, -this.Delta.Height);
     Point p1 = this.Points[0]; // 辺の始点を格納しているものとする
     Point p2 = this.Points[1]; // 辺の終点を格納しているものとする
     e.Points[0] = p2;
     e.Points[1] = p1;
     return e;
 }
 /// <summary>
 /// 包含関係にあるか?
 /// </summary>
 /// <param name="tagt"></param>
 /// <returns></returns>
 public bool Contains(Edge_Ver_1_2 tagt, out Point minPt, out Point maxPt)
 {
     bool contains = false;
     minPt = new Point();
     maxPt = new Point();
     if (this.Delta.Equals(tagt.Delta))
     {
         if (this.Delta.Equals(new Size(1, 0)) && this.Points[0].Y == tagt.Points[0].Y)
         {
             int minX;
             int maxX;
             if (tagt.Points[1].X <= this.Points[0].X)
             {
                 //  this                 +-------------+
                 //  tagt +-------------+
                 //
                 //  this               +-------------+
                 //  tagt +-------------+
             }
             else if (tagt.Points[0].X >= this.Points[1].X)
             {
                 //  this +-------------+
                 //  tagt               +-------------+
                 //
                 //  this +-------------+
                 //  tagt                 +-------------+
             }
             else
             {
                 contains = true;
                 if (this.Points[0].X >= tagt.Points[0].X)
                 {
                     minX = this.Points[0].X;
                 }
                 else
                 {
                     minX = tagt.Points[0].X;
                 }
                 if (this.Points[1].X <= tagt.Points[1].X)
                 {
                     maxX = this.Points[1].X;
                 }
                 else
                 {
                     maxX = tagt.Points[1].X;
                 }
                 minPt = new Point(minX, this.Points[0].Y);
                 maxPt = new Point(maxX, this.Points[0].Y);
             }
         }
         else if (this.Delta.Equals(new Size(0, 1)) && this.Points[0].X == tagt.Points[0].X)
         {
             int minY;
             int maxY;
             if (tagt.Points[1].Y <= this.Points[0].Y)
             {
                 //  this                 +-------------+
                 //  tagt +-------------+
                 //
                 //  this               +-------------+
                 //  tagt +-------------+
             }
             else if (tagt.Points[0].Y >= this.Points[1].Y)
             {
                 //  this +-------------+
                 //  tagt               +-------------+
                 //
                 //  this +-------------+
                 //  tagt                 +-------------+
             }
             else
             {
                 contains = true;
                 if (this.Points[0].Y >= tagt.Points[0].Y)
                 {
                     minY = this.Points[0].Y;
                 }
                 else
                 {
                     minY = tagt.Points[0].Y;
                 }
                 if (this.Points[1].Y <= tagt.Points[1].Y)
                 {
                     maxY = this.Points[1].Y;
                 }
                 else
                 {
                     maxY = tagt.Points[1].Y;
                 }
                 minPt = new Point(this.Points[0].X, minY);
                 maxPt = new Point(this.Points[0].X, maxY);
             }
         }
     }
     return contains;
 }