Пример #1
0
 /// <summary>
 /// 与线的关系
 /// </summary>
 /// <param name="line"></param>
 /// <returns></returns>
 public LineRelation CheckLineRelation(Line2D line)
 {
     // 共线判断
     if (Double2.CheckInLine(this.normalizedDir, line.normalizedDir) == true)
     {
         Double2 diff = line.startPoint - this.startPoint;
         // 贡献判断
         if (Double2.CheckInLine(this.normalizedDir, diff) == true)
         {
             return(LineRelation.Coincide);
         }
         else
         {
             return(LineRelation.Parallel);
         }
     }
     else
     {
         Double2 aixsVector1 = line.AixsVector(this.startPoint);
         Double2 aixsVector2 = line.AixsVector(this.endPoint);
         if (Double2.Dot(aixsVector1, aixsVector2) < 0)
         {
             return(LineRelation.Intersect);
         }
         else
         {
             return(LineRelation.Detach);
         }
     }
 }
Пример #2
0
 /// <summary>
 /// 射线与射线间的关系
 /// </summary>
 /// <param name="line"></param>
 /// <returns></returns>
 public LineRelation CheckLineRelation(Rays2D line)
 {
     // 共线判断
     if (Double2.CheckInLine(this.normalizedDir, line.normalizedDir) == true)
     {
         Double2 diff = line.startPoint - this.startPoint;
         // 共线判断
         if (Double2.CheckInLine(this.normalizedDir, diff) == true)
         {
             return(LineRelation.Coincide);
         }
         else
         {
             return(LineRelation.Parallel);
         }
     }
     else
     {
         // 先判断this 是否与line 所在直线相交
         Double2 aixsVector = line.AixsVector(this.startPoint);
         if (Double2.Dot(aixsVector, this.normalizedDir) > 0)
         {
             return(LineRelation.Detach);
         }
         // 先判断line 是否与this 所在直线相交
         aixsVector = this.AixsVector(line.startPoint);
         if (Double2.Dot(aixsVector, line.normalizedDir) > 0)
         {
             return(LineRelation.Detach);
         }
         return(LineRelation.Intersect);
     }
 }
Пример #3
0
        /// <summary>
        /// 判断点是否在直线上
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool CheckIn(Double2 pt)
        {
            Double2 diff = pt - this.startPoint;

            if (Double2.CheckInLine(diff, this.normalizedDir) == true && Double2.Dot(diff, this.normalizedDir) > 0)
            {
                return(true);
            }
            return(false);
        }
Пример #4
0
        /// <summary>
        /// 判断点是否在线段上
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool CheckIn(Double2 pt)
        {
            Double2 diff1 = pt - this.startPoint;
            Double2 diff2 = pt - this.endPoint;

            if (Double2.CheckInLine(diff1, diff2) == true && Double2.Dot(diff1, diff2) <= 0)
            {
                return(true);
            }
            return(false);
        }
Пример #5
0
 /// <summary>
 /// 与直线的关系
 /// </summary>
 /// <param name="line"></param>
 /// <returns></returns>
 public LineRelation CheckLineRelation(Line2D line)
 {
     // 共线判断
     if (Double2.CheckInLine(this.normalizedDir, line.normalizedDir) == true)
     {
         Double2 diff = line.startPoint - this.startPoint;
         // 贡献判断
         if (Double2.CheckInLine(this.normalizedDir, diff) == true)
         {
             return(LineRelation.Coincide);
         }
         else
         {
             return(LineRelation.Parallel);
         }
     }
     else
     {
         return(LineRelation.Intersect);
     }
 }
Пример #6
0
 /// <summary>
 /// 判断点是否在直线上
 /// </summary>
 /// <param name="pt"></param>
 /// <returns></returns>
 public bool CheckIn(Double2 pt)
 {
     return(Double2.CheckInLine(pt - this.startPoint, this.normalizedDir));
 }