Ejemplo n.º 1
0
 /// <summary>
 /// 二维平面内直线的交点,如果没有交点,则返回 null
 /// </summary>
 /// <returns>如果两直线平行或者近似平行,以至找不到交点,则返回 null </returns>
 public XY GetIntersectPointWith(Line2D line2)
 {
     // 先判断两条直线是否平行
     if (Direction.IsCollinearWith(line2.Direction))
     {
         return(null);
     }
     else
     {
         return(GetIntersectPoint(k, b, line2.k, line2.b));
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 两个指向器在平面上是否能够相交,如果能,则返回其交点坐标;如果两射线平行,则不能相交,此时返回 null
        /// </summary>
        /// <param name="ray2">用来判断相交的另一条射线</param>
        /// <returns></returns>
        public XY IntersectWith(Ray2D ray2)
        {
            // 先判断两条射线所对应的无限长的直线在二维平面中的交点
            if (Direction.IsCollinearWith(ray2.Direction))
            {
                // 平行向量不可能相交
                return(null);
            }
            // 两直线的交点
            XY intersectPoint = null;

            intersectPoint = Line.GetIntersectPointWith(ray2.Line);
            if (intersectPoint == null)
            {
                return(null);
            }
            // 再判断这两条射线的起止范围是否包含了此交点
            return((Contains(intersectPoint) && ray2.Contains(intersectPoint)) ? intersectPoint : null);
        }