日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多边形上点的顺序排序_一种寻找多边形视觉中心的新算法

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多边形上点的顺序排序_一种寻找多边形视觉中心的新算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遇到的問題

在一個多邊形上放置文本標簽或工具提示的最佳位置通常位于其“視覺中心”的某個位置,即多邊形內部的一個點,周圍有盡可能多的空間。

計算這樣一個中心首先想到的是多邊形質心。你可以用一個簡單快速的公式計算多邊形中心,但如果形狀是凹的或有一個洞,點可以落在形狀外面。我們如何定義我們需要的點?一個更可靠的定義是”不可到達的極點”或”最大內接圓”:多邊形中離邊緣最遠的點。不幸的是,計算不可訪問性的極點既復雜又緩慢。公布的解決方案需要約束delaunay三角化(Constrained Delaunay Triangulation)或計算一個直線骨架作為預處理步驟——這兩個步驟都是緩慢且容易出錯的。對于我們的用例,我們不需要一個精確解——我們愿意犧牲一些精度來獲得更快的速度。當我們在地圖上放置標簽時,以毫秒為單位計算比精確計算更重要。我們為這個問題創建了一個新的啟發式算法。

現有的解決方案

這項在線任務的唯一近似算法是由加西亞-卡斯特利亞諾斯和倫巴多在2007年的論文中描述的。算法是這樣的:

  • 將點置于任意大小的網格上(本文中為24x24,或576個點),在其邊界框內探測多邊形,丟棄多邊形外的所有點。
  • 計算每個點到多邊形的距離,選擇距離最長的點。
  • 重復上面的步驟,但是在這一點上有一個更小的網格(比任意系數1.414小)。
  • 該算法運行多次,直到搜索區域足夠小,達到我們想要的精度。
這個算法有兩個問題:
  • 它不能保證找到一個好的解決方案,這取決于機會和外形相對良好的多邊形。
  • 在較大的多邊形上運行速度較慢,因為有很多點檢查的過程。對于上圖中的每個藍點,你必須循環遍歷所有多邊形點。
然而,以這個想法為靈感,我們設法設計了一個新的算法來修復這兩個缺陷。

新的解決方案

我們需要設計一種不依賴于任意常數的算法,并且能夠以可靠的增加精度對整個多邊形進行徹底搜索。那么就有一個熟悉的概念可以與這個問題直接相關——四叉樹

四叉樹的主要概念是遞歸地將二維空間細分為四個象限。這在許多應用程序中都有應用——不僅是空間索引,而且有圖像壓縮,甚至是物理模擬,在這些應用程序中,提高特定領域的自適應精度是有益的。下面我們將介紹如何將四叉樹分區應用于查找不可訪問極點的問題。
  • 從覆蓋多邊形的幾個大單元開始。
  • 遞歸地將它們細分為4個較小的單元,探索單元中心作為候選,丟棄那些不可能包含比我們已經找到的更好的解決方案的單元。
  • 由于搜索是徹底的,我們最終會找到一個保證在全局最優范圍內的單元。我們如何知道某單元是否可以被丟棄?讓我們考慮一個多邊形上的方形單元格:如果我們知道從單元中心到多邊形的距離(上面的dist),單元內的任何一點到多邊形的距離都不能大于dist+radius,其中radius就是單元的半徑。如果潛在單元格最大值小于或等于我們已經處理過的單元格的最佳距離(在給定的精度范圍內),我們可以放心地丟棄這個單元格。為了使這個假設對任何單元格都能正確工作,不管它們的中心是否在多邊形內,我們需要使用到多邊形的有符號距離——如果一個點在多邊形內為正,如果它在多邊形外為負。

    尋找更快的解決方案

    越早發現一個遠離多邊形邊緣的“好的”單元格,我們在運行中丟棄的單元格就越多,搜索速度也就越快。那么我們如何更快地找到好的單元格呢?

    我們決定試試另一種方法。我們開始管理優先隊列中的單元格,按照單元格的“潛力(potential)”:dist + radius進行排序。通過這種方式,單元格按照其潛力的順序進行處理。差不多使算法的性能提高了一倍。我們可以做到的另一個加速方法是把多邊形質心作為第一個“最佳猜測”,這樣我們就可以丟棄所有更壞的單元格。這提高了形狀相對規則的多邊形的性能。

    總結

    最終得出來的算法就是Polylabel,這是一個快速而精確的JavaScript模塊,用于查找合適的點,以便在多邊形上放置標簽。它比我們開始時的算法快40倍,同時保證在所有情況下都能得到正確的結果。?

    關注圖鯨科技??mapwhale.com

    總結

    以上是生活随笔為你收集整理的多边形上点的顺序排序_一种寻找多边形视觉中心的新算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。