コード例 #1
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;
        }
コード例 #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;
 }