コード例 #1
0
        public static Intersection GetLineIntersection(Line line1, Line line2)
        {
            // Doc 참조할 것.
            // (line2 - line1) x (line2Direction) / line1Direction x line2Direction
            double determinant = Vector2.Cross(line1.Direction, line2.Direction);

            // 두 직선이 평행한 경우이다.
            if (UMath.IsZero(determinant))
            {
                return(new Intersection(true, Vector2.Zero));
            }

            double  p            = Vector2.Cross(line2.InPoint - line1.InPoint, line2.Direction) / determinant;
            Vector2 intersection = line1.InPoint + p * line1.Direction;

            return(new Intersection(false, intersection));
        }