<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      歡迎大家下載試用折桂單點登錄系統, https://www.zheguisoft.com

      java/c# 判斷點是否在多邊形區域內

      最近幫別人解決了一個問題,如何判斷一個坐標點,是否在多邊形區域內(二維)。

      在網上搜索了一圈,都是自己寫代碼,有多種算法,分凸多邊形、凹多邊形,總之是麻煩。

       

      繼續搜索,了解到 Java/dotnet 自帶的類庫中,都有現成的類函數,可以解決這個問題。

      考慮到了解的人不多,特將相關知識共享出來,也許大家以后也用得著。

       

      a) dotnet 中,用 System.Drawing.Drawing2D.GraphicsPath 和 Region 類聯合起來,然后用 Region.IsVisible(point) 函數,可以判斷點是否在多邊形區域內。

       

      b) Java 中,使用 java.awt.Polygon.contains(point) ,或者 java.awt.geom.GeneralPath.contains(point) 函數,都可以判斷點是否在多邊形區域內。

       

      以下是代碼示例:

      code c#:

      System.Drawing.Drawing2D.GraphicsPath myGraphicsPath=new System.Drawing.Drawing2D.GraphicsPath();
      Region myRegion=new Region();
      myGraphicsPath.Reset();

      //添家多邊形點
      Point p1=new Point(x1,y1);
      Point p2=new Point(x2,y2);
      Point p3=new Point(x3,y3);
      Point p4=new Point(x4,y4);

      myGraphicsPath.AddPolygon(LoadPoint(p1,p2,p2,p4));
      myRegion.MakeEmpty();
      myRegion.Union(myGraphicsPath);
      //返回判斷點是否在多邊形里
      bool myPoint =myRegion.IsVisible(MousePoint);

       

      code java 1:

      public boolean checkWithJdkGeneralPath(Point2D.Double point, List<Point2D.Double> polygon) {
        java.awt.geom.GeneralPath p = new java.awt.geom.GeneralPath();

         Point2D.Double first = polygon.get(0);
         p.moveTo(first.x, first.y);

         for (Point2D.Double d : polygon) {
            p.lineTo(d.x, d.y);
         }

         p.lineTo(first.x, first.y);

         p.closePath();

         return p.contains(point);

      }

       

      code java 2:

      public boolean checkWithJdkPolygon(Point2D.Double point, List<Point2D.Double> polygon) {
          java.awt.Polygon p = new Polygon();

          // java.awt.geom.GeneralPath
          final int TIMES = 1000;

          for (Point2D.Double d : polygon) {
              int x = (int) d.x * TIMES;
              int y = (int) d.y * TIMES;
              p.addPoint(x, y);
          }

          int x = (int) point.x * TIMES;
          int y = (int) point.y * TIMES;

          return p.contains(x, y);

      }

      java.awt.Polygon 好像只能處理整數坐標值,不能處理浮點數。

      posted @ 2012-04-26 15:29  杰克倫敦塵  Views(10386)  Comments(3)    收藏  舉報
      歡迎大家下載試用折桂單點登錄系統, https://www.zheguisoft.com
      主站蜘蛛池模板: 午夜成人性爽爽免费视频| 亚洲国产成人va在线观看天堂| 美女一区二区三区亚洲麻豆| 无套内谢极品少妇视频| 国产一区二区三区无遮挡| 国产精品自偷一区在线观看| 国产亚洲欧美日韩在线一区二区三| 玩弄放荡人妻少妇系列| 国内少妇人妻丰满av| 中文字幕精品无码一区二区| 国产免费性感美女被插视频| 日韩在线视频观看免费网站| 国产成人av电影在线观看第一页| 亚洲国产成人精品av区按摩| 日本高清在线观看WWW色| 激烈的性高湖波多野结衣| 日韩一区二区三区在线视频| 久久精品一区二区东京热| 日韩丝袜人妻中文字幕| 怡春院久久国语视频免费| 一区二区三区午夜无码视频| 国产99re热这里只有精品| 特级做a爰片毛片免费看无码| 久久精品国产99精品亚洲| 在线精品国产中文字幕| 免费全部高h视频无码| 国产一区二区黄色在线观看| 东京热人妻无码一区二区av| 免费观看日本污污ww网站69| 亚洲国产欧美在线人成| 国产一区二区三区激情视频| 亚洲国产精品人人做人人爱| XXXXXHD亚洲日本HD| 日韩精品中文字一区二区| 国产精品久久精品| 国产精品一码二码三码| 免费观看全黄做爰大片| 国产成人精品亚洲精品日日| 日本精品一区二区不卡| 在线观看潮喷失禁大喷水无码| 国产精品青青在线观看爽香蕉|