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); } }
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));
protected MarkupLinesIntersect(MarkupLinePair pair) : base() { Pair = pair; }
protected MarkupLinesIntersect(MarkupLinePair pair, float firstT, float secondT, float angle) : base(firstT, secondT, angle) { Pair = pair; }
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)); }
public static MarkupLineIntersect NotIntersect(MarkupLinePair pair) => new MarkupLineIntersect(pair, -1, -1);
public MarkupLineIntersect(MarkupLinePair pair, float firstT, float secondT) : base(firstT, secondT) { Pair = pair; }