我的靈感來自Jennifer Dewalt的項目169:Electro Bounce(鏈接:http://jenniferdewalt.com/electro_bounce/page)我想從一個粗略的想法開始,並將其添加到我的初始頁面。我看到在她的頁面中,線條是在彼此相距一定距離內的任何節點之間繪製的。什麼是有效的方式來實現這個(在Javascript中)?任何建議或提示表示讚賞,謝謝什麼是在一定距離內找到所有點的有效方法? (Javascript)
-1
A
回答
1
要找到一定距離內的所有點,你必須比較每個點與所有其他點。然而,有些事情可以儘早消除點,而無需比較它們之間的確切距離。
當看一個點時,想象一下用最大距離的半徑繪製一個圓。要連接的點將位於此圈內。
現在想象一個正好包含圓的正方形。要考慮的要點將在sqare內,再加上角落裏的幾個點。檢查一個點是否與一個圓形相比要容易得多,所以當你單擊了正方形中的點時,可以檢查它們是否在圓內。
因此,通過計算平方的範圍開始(x
和y
是您lookning周圍穴位,並d
是最大距離):
var x1 = x - d, y1 = y - d, x2 = x + d, y2 = y + d;
通過積分循環,你可以檢查是否有點(px
和py
)是正方形內:
if (px >= x1 && px <= x2 && py >= y1 && py <= y2) {
然後你可以檢查它是否是圈內。您可以使用Pythagoras theorem來計算點之間的距離。距離是垂直和水平距離之和的平方根,而平方根是一個昂貴的計算,所以不是你應該得到的總和,並將它與距離的平方:
if ((px - x) * (px - x) + (py - y) * (py - y) <= d * d) {
早期消除點的另一種方法是將屏幕劃分爲最大距離一側的正方形,並將點存儲在每個正方形的單獨數組中(或將正方形數字附加到每個點)。在查看某個點時,您知道最大距離內的點只能位於同一個正方形或八個周圍正方形中的任何一個。
這當然意味着當你移動點時需要做更多的工作,因爲你必須檢查一個點屬於哪個數組,但是隨着點的數量線性增長,而距離計算隨着點的數量呈指數增長點。
+0
謝謝,這非常有幫助 – xheyhenry 2014-09-11 23:04:45
相關問題
- 1. 找到設定點距離一定範圍內的所有用戶?
- 2. 有沒有一種有效的方法來確定距離?
- 3. 在另一個點的距離內查找所有點的算法
- 4. 如何找到距給定像素一定距離內的所有像素?
- 5. 檢查所有線段的指定距離內的所有點
- 6. 在距離另一點一定距離的二維網格上查找所有點的算法
- 7. 用於在給定距離內查找所有地理點的Android算法
- 8. 在R中有效計算一點和一組點之間的所有距離
- 9. 使用gremlin找到距離開始節點給定距離內的所有節點
- 10. 通過路徑獲取一定距離內的所有點
- 11. 如何有效地找到C中所有點之間的距離?
- 12. Geokit Rails的距離,找到(:所有)
- 13. 在特定距離內查找所有最近的鄰居
- 14. 使用mysql在3d中找到歐氏距離的最有效方法是什麼?
- 15. 找到一個點,使距離一個有限區域內的一組點的總距離最大
- 16. Postgresql:在距離海岸的距離內找到道路端點
- 17. 計算紅寶石漢明距離最有效的方法是什麼?
- 18. 什麼是找到距離某個位置最近的非碰撞矩形的有效方法
- 19. 找到距離地點最小總距離的點的算法
- 20. 有沒有一種算法來找到所有其他節點的每個節點的距離
- 21. 獲取所有具有特定距離的點,在路上
- 22. 在加權圖中找到從節點到所有其他節點的距離
- 23. 什麼是快速找到物品的有效方法?
- 24. 找到兩個集合的最有效方法是什麼?
- 25. 計算一個區域內所有點的距離
- 26. 尋找有效數字的距離
- 27. 沿着距離兩個給定點的距離找到一條中間點
- 28. 對於圖中的每個頂點,找出距離內的所有頂點d
- 29. Rails,距離郵編的距離內的所有郵編
- 30. 特定距離內的點
這不是一個編碼工廠。你需要研究和嘗試..不只是要求代碼或方向.. – 2014-09-11 09:20:37
不能看看例子atm。但如果它只是距離,你可以使用歐幾里得距離:http://en.wikipedia.org/wiki/Euclidean_distance – speendo 2014-09-11 09:23:21
[我真的很喜歡她的文字到盲文轉換器。](http://jenniferdewalt.com/text_to_braille/轉換器) – Andy 2014-09-11 09:24:46