예제 #1
0
        public static bool Calculate(MarkupLinePair pair, out MarkupLineIntersect intersect)
        {
            intersect = NotIntersect(pair);

            if (pair.First.IsEnterLine || pair.Second.IsEnterLine || pair.First.Start == pair.Second.Start || pair.First.Start == pair.Second.End || pair.First.End == pair.Second.Start || pair.First.End == pair.Second.End)
            {
                return(false);
            }
            else
            {
                var isIntersect = Intersect(pair.First.Trajectory, pair.Second.Trajectory, out float firstT, out float secondT);
                intersect.FirstT  = firstT;
                intersect.SecondT = secondT;
                return(isIntersect);
            }
        }
예제 #2
0
        public static MarkupLinesIntersect Calculate(MarkupLinePair pair)
        {
            var mustIntersect = pair.MustIntersect;

            if (pair.MustIntersect != false)
            {
                var firstTrajectory  = GetTrajectory(pair.First, mustIntersect);
                var secondTrajectory = GetTrajectory(pair.Second, mustIntersect);

                var intersect = CalculateSingle(firstTrajectory, secondTrajectory);
                if (intersect.IsIntersect)
                {
                    return(new MarkupLinesIntersect(pair, intersect.FirstT, intersect.SecondT, intersect.Angle));
                }
            }

            return(new MarkupLinesIntersect(pair));
예제 #3
0
 protected MarkupLinesIntersect(MarkupLinePair pair) : base()
 {
     Pair = pair;
 }
예제 #4
0
 protected MarkupLinesIntersect(MarkupLinePair pair, float firstT, float secondT, float angle) : base(firstT, secondT, angle)
 {
     Pair = pair;
 }
예제 #5
0
 public static MarkupLinesIntersect Calculate(MarkupLinePair pair)
 {
     if (pair.CanIntersect && Calculate(pair.First.Trajectory, pair.Second.Trajectory).FirstOrDefault() is MarkupIntersect intersect && intersect.IsIntersect)
     {
         return(new MarkupLinesIntersect(pair, intersect.FirstT, intersect.SecondT, intersect.Angle));
     }
예제 #6
0
 public static MarkupLineIntersect NotIntersect(MarkupLinePair pair) => new MarkupLineIntersect(pair, -1, -1);
예제 #7
0
 public MarkupLineIntersect(MarkupLinePair pair, float firstT, float secondT) : base(firstT, secondT)
 {
     Pair = pair;
 }