如何識別隨機生成的點落在地圖上的哪個區域?我已經在 stackoverflow 上發布了這個問題但被指向社區,因為它更有可能得到答案。 還有一張圖片表示我的問題需要什麼。
本質上,我有一個由幾個矩形區域組成的“地圖”。 我可以訪問每個矩形區域的所有頂點的坐標(它們的 x_min、x_max、y_min、y_max)。
我隨機生成一個位於該地圖上任意位置的點。 我知道那個點的坐標(x 和 y)。 我要解決的問題是找出該點所在的區域。
我所做的,只是通過一個大的條件語句來檢查點的 x & y 坐標是否在每個區域的 x_min 和 x_max 以及 y_min 和 y_max 之間。 但是,我覺得必須有一種更具可擴展性、可推廣性和效率的方法來做到這一點,但我找不到這樣做的方法,至少不是不同編程語言庫中沒有的方法。 我想可能會做一些事情,將地圖分成兩半,找出點在哪一半,計算那一半中的所有區域,檢查是否還剩下一個區域,如果沒有,再次將地圖分成兩半,然後再次經歷這個過程。 我只是不知道如何實施以及這是否可行或比我目前的方法更好。
腳本編寫視窗回复:如何確定隨機生成的點落在地圖上的哪個區域?如果我要為平鋪矩形區域發明一種算法,我會使用 KDTable 函數並將所有角點加載到表格中。 像這樣的東西:
one to four rectangles share each corner一到四個矩形共享每個角
KDTable 將有效地告訴哪個角最接近任何查詢的 xy 位置。 如果您保留另一個包含共享該點的所有矩形的表格,則您最多只需要檢查四個。 根據您對數據的排序方式,只需知道
KDTable 在 K 維中幾乎完成了您所描述的工作。對於 xy 數據,K==2。
回复:如何確定隨機生成的點落在地圖上的哪個區域?或者也許更難。
This will find the wrong corner.這將找到錯誤的角落。