internal static void CalculatePointVisibilityGraph(IEnumerable<Polyline> listOfHoles, VisibilityGraph visibilityGraph, Point point, VisibilityKind visibilityKind, out VisibilityVertex qVertex) { //maybe there is nothing to do var qv = visibilityGraph.FindVertex(point); if (qv != null){ qVertex = qv; return; } var calculator = new PointVisibilityCalculator(listOfHoles, visibilityGraph, point, visibilityKind); calculator.FillGraph(); qVertex = calculator.QVertex; Debug.Assert(qVertex != null); }
/// <summary> /// We suppose that the holes are convex and oriented clockwis and are mutually disjoint /// </summary> /// <param name="listOfHoles"></param> /// <param name="visibilityGraph"></param> /// <param name="point">The point can belong to the boundary of one of the holes</param> /// <param name="visibilityKind">tangent or regural visibility</param> /// <param name="qVertex">the graph vertex corresponding to the pivot</param> /// <returns></returns> internal static VisibilityVertex CalculatePointVisibilityGraph( IEnumerable <Polyline> listOfHoles, VisibilityGraph visibilityGraph, Point point, VisibilityKind visibilityKind) { //maybe there is nothing to do var qv = visibilityGraph.FindVertex(point); if (qv != null) { return(qv); } var calculator = new PointVisibilityCalculator(listOfHoles, visibilityGraph, point, visibilityKind); calculator.FillGraph(); return(calculator.QVertex); }
internal static void CalculatePointVisibilityGraph(IEnumerable <Polyline> listOfHoles, VisibilityGraph visibilityGraph, Point point, VisibilityKind visibilityKind, out VisibilityVertex qVertex) { //maybe there is nothing to do var qv = visibilityGraph.FindVertex(point); if (qv != null) { qVertex = qv; return; } var calculator = new PointVisibilityCalculator(listOfHoles, visibilityGraph, point, visibilityKind); calculator.FillGraph(); qVertex = calculator.QVertex; Debug.Assert(qVertex != null); }