/// <summary> /// 线和三角形相交 /// </summary> /// <param name="line"></param> /// <param name="triangle"></param> /// <returns></returns> public static Segment2?IntersectionWith(this Line2 line, Triangle2 triangle) { IntersectionLine2Triangle2 intersectionLine2Triangle = new IntersectionLine2Triangle2(line, triangle); bool flag = intersectionLine2Triangle.Find(); if (flag && intersectionLine2Triangle.IntersectionType == Intersection.Type.IT_SEGMENT) { return(new Segment2?(new Segment2(intersectionLine2Triangle.Point0, intersectionLine2Triangle.Point1))); } if (flag && intersectionLine2Triangle.IntersectionType == Intersection.Type.IT_POINT) { return(new Segment2?(new Segment2(intersectionLine2Triangle.Point0, line.Direction, 0.0))); } return(null); }
/// <summary> /// /// </summary> /// <param name="line"></param> /// <param name="triangle"></param> /// <returns></returns> public static ICollection <Vector2> IntersectionPointsWith(this Line2 line, Triangle2 triangle) { IntersectionLine2Triangle2 intersectionLine2Triangle = new IntersectionLine2Triangle2(line, triangle); intersectionLine2Triangle.Find(); List <Vector2> list = new List <Vector2>(); Vector2[] array = new Vector2[] { intersectionLine2Triangle.Point0, intersectionLine2Triangle.Point1 }; for (int i = 0; i < intersectionLine2Triangle.Quantity; i++) { list.Add(array[i]); } return(list); }