久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

如何簡(jiǎn)單判斷一個(gè)點(diǎn)是否在某個(gè)區(qū)域之中

 好漢勃士 2019-09-24

具體原理:射線法(但是本人也并不是很理解為什么在某個(gè)區(qū)域內(nèi)則會(huì)說(shuō)交點(diǎn)為奇數(shù)個(gè),,不過(guò)通過(guò)畫(huà)圖的確沒(méi)法畫(huà)出那種情況)

有興趣的朋友可以自行百度google各種資料

下面是本人根據(jù)理解寫(xiě)的代碼,,有問(wèn)題歡迎批評(píng)指正

  1. public boolean isInRegion(Point p, List<Point> boundary) {
  2. int size = boundary.size();
  3. // 計(jì)數(shù)器
  4. for (Point model : boundary) {
  5. // 如果點(diǎn)落在邊界上也認(rèn)為在該區(qū)域內(nèi)
  6. if (p.equals(model)) {
  7. return true;
  8. }
  9. }
  10. int count = 0;
  11. Point p1;
  12. Point p2;
  13. int x1, y1, x2, y2;
  14. for (int i = 0; i < size; i++) {
  15. p1 = boundary.get(i % size);
  16. p2 = boundary.get((i + 1) % size);
  17. x1 = p1.getX();
  18. x2 = p2.getX();
  19. y1 = p1.getY();
  20. y2 = p2.getY();
  21. if (y1 == y2) {
  22. continue;
  23. }
  24. if (p.getY() < Math.min(y1, y2)) {
  25. continue;
  26. }
  27. if (p.getY() > Math.max(y1, y2)) {
  28. continue;
  29. }
  30. int x = x2 - ((x2 - x1) * (y2 - p.getY()) / (y2 - y1));
  31. // 這里考慮往x正方向做射線
  32. if (x < p.getX()) {
  33. continue;
  34. }
  35. count++;
  36. }
  37. //如果是奇數(shù)則說(shuō)明該點(diǎn)在區(qū)域之中
  38. return count % 2 == 1;
  39. }

具體應(yīng)用的話:像判斷一個(gè)建筑物屬于哪一個(gè)城市,行政區(qū)或是街道的話應(yīng)該都能使用

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多