Exemplo n.º 1
0
        RBNode <AxisEdgesContainer> GetContainerNodeToTheLeftOfEvent(Point site)
        {
            double siteX = xProjection(site);

            return
                (edgeContainersTree.FindLast(
                     container => xProjection(container.Source) <= siteX));
            //                Point.PointToTheRightOfLineOrOnLine(site, container.Source,
            //                                                                                                container.UpPoint));
        }
Exemplo n.º 2
0
        void FindBeforeAfterV(VisibilityVertex v, RbTree <VisibilityVertex> nodeBoundaryRbTree,
                              out VisibilityVertex beforeV, out VisibilityVertex afterV, Point center)
        {
            Point xDir   = new Point(1, 0);
            var   vAngle = Point.Angle(xDir, v.Point - center);
            var   rNode  = nodeBoundaryRbTree.FindLast(w => Point.Angle(xDir, w.Point - center) <= vAngle);

            beforeV = rNode != null ? rNode.Item : nodeBoundaryRbTree.TreeMaximum().Item;
            rNode   = nodeBoundaryRbTree.FindFirst(w => Point.Angle(xDir, w.Point - center) >= vAngle);
            afterV  = rNode != null ? rNode.Item : nodeBoundaryRbTree.TreeMinimum().Item;
        }
 void FindBeforeAfterV(VisibilityVertex v, RbTree<VisibilityVertex> nodeBoundaryRbTree,
     out VisibilityVertex beforeV, out VisibilityVertex afterV, Point center) {
     Point xDir=new Point(1,0);
     var vAngle = Point.Angle(xDir, v.Point - center);
     var rNode = nodeBoundaryRbTree.FindLast(w => Point.Angle(xDir, w.Point - center) <= vAngle);
     beforeV = rNode!=null? rNode.Item : nodeBoundaryRbTree.TreeMaximum().Item;
     rNode = nodeBoundaryRbTree.FindFirst(w => Point.Angle(xDir, w.Point - center) >= vAngle);
     afterV = rNode != null ? rNode.Item : nodeBoundaryRbTree.TreeMinimum().Item;
 }
Exemplo n.º 4
0
 RBNode <ConeSide> GetLastNodeToTheLeftOfPointInRightSegmentTree(Point obstacleSideStart)
 {
     return(rightConeSides.FindLast(
                s => PointIsToTheRightOfSegment(obstacleSideStart, s)));
 }
Exemplo n.º 5
0
 internal static RBNode <CdtFrontElement> FindNodeInFrontBySite(RbTree <CdtFrontElement> cdtFrontElements, CdtSite piSite)
 {
     return(cdtFrontElements.FindLast(x => x.LeftSite.Point.X <= piSite.Point.X));
 }
Exemplo n.º 6
0
 void ProjectToFront(CdtSite site, out RBNode <CdtFrontElement> frontElement)
 {
     frontElement = front.FindLast(s => s.X <= site.Point.X);
 }
 internal static RBNode<CdtFrontElement> FindNodeInFrontBySite(RbTree<CdtFrontElement> cdtFrontElements, CdtSite piSite) {
     return  cdtFrontElements.FindLast(x => x.LeftSite.Point.X <= piSite.Point.X);
 }