我試圖確定我的機器人將與牆壁相交的位置,並指定其在地圖中的位置以及以弧度指向的角度。因此,爲了總結問題,給定一個任意大小的正方形網格[1-infinity],該網格內的對象以及該對象所面對的角度(弧度),找到與網格邊界相交的點。例如,你有一個10×10的網格,你的物體位於(5,5)的位置,它面對的角度是π/ 8弧度(東北方向)。如果這個物體是直線移動的,它會在哪裏與牆壁相交?是否有適用於任何位置和任何角度的廣義解決方案?到目前爲止,我所做的是在同一條軌跡上計算網格外的點,並查看所有點,直到找到牆,但我覺得可能有更優雅的解決方案。謝謝您的幫助!機器人方格網格交點
1
A
回答
0
可以簡單地找到兩個線段的交點。
第一段:機器人在指向角度位置的段。使該段比網格的對角線更大,以確保它將與邊界相交(如果它將要)。 第二部分:組成相關牆的線段。
請參閱http://www.faqs.org/faqs/graphics/algorithms-faq/第1.03節中的算法使兩條線段相交。
comp.graphics.algorithms FAQ是機器人中常見幾何問題的有用資源。
0
僞代碼用於與起點射線內部矩形:
起點(X0, Y0)
射線角Theta
,c = Cos(Theta), s = Sin(Theta);
矩形座標:bottom left (X1,Y1), top right (X2,Y2)
if c >= 0 then //up
XX = X2
else
XX = X1
if s >= 0 then //right
YY = Y2
else
YY = Y1
if c = 0 then //vertical ray
return Intersection = (X0, YY)
if s = 0 then //horizontal ray
return Intersection = (XX, Y0)
tx = (XX - X0)/c //parameter when vertical edge is met
ty = (YY - Y0)/s //parameter when horizontal edge is met
if tx <= ty then //vertical first
return Intersection = (XX, Y0 + tx * s)
else //horizontal first
return Intersection = (X0 + ty * c, YY)
相關問題
- 1. 網格網格交叉點
- 2. 互聯網機器人 - 填寫表格
- 3. 交錯網格視圖老年人API
- 4. MVC網格提交
- 5. 機器人的RatingBar小風格
- 6. 電報機器人消息格式
- 7. 點擊網格
- 8. 與方形網格的最佳線交點
- 9. 以快速方式找到線和網格之間的交點
- 10. 創建網格。將點插入網格
- 11. 正方形網格 - (旋轉)矩形相交 - 計算所有交點細胞
- 12. Bootstrap交換網格跨度
- 13. 交互式網格WPF
- 14. 交替網格顏色
- 15. 點擊提交表格
- 16. Python網絡機器人(urllib)
- 17. 機器人抵抗網站
- 18. Java - 點擊機器人
- 19. 以XML格式編寫2D點網格
- 20. 如何適合隨機點雲上的點網格
- 21. 箱撞機無網格,Physics.Raycast
- 22. LWJGL網格JBullet對撞機
- 23. 顯示隨機網格c#
- 24. asp.net mvc jqgrid使用網格外的按鈕提交網格
- 25. 傳感器和機器人之間的數據格式
- 26. Directx網格頂點問題
- 27. Mehlab中的點雲網格
- 28. 網格內的點sql
- 29. 異常點擊網格列
- 30. ThreeJS:計算正交攝像機中的網格的FOV
您的網格是否由100個單元格組成,並且您需要與每個網格線相交的交點?或者只是一個矩形,你需要與它的邊界相交? – MBo