我試圖確定我的機器人將與牆壁相交的位置,並指定其在地圖中的位置以及以弧度指向的角度。因此,爲了總結問題,給定一個任意大小的正方形網格[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. PLOT3D格式:在網格交點畫點
- 3. 互聯網機器人 - 填寫表格
- 4. 機器人在網格中的位置和方向
- 5. 交錯網格視圖老年人API
- 6. 查找線條與網格的交點
- 7. 找到網格交叉點的算法
- 8. 細胞大小在網格佈局[機器人]
- 9. 機器人如何應用風格XML
- 10. 機器人的RatingBar小風格
- 11. 機器人的EditText貨幣格式
- 12. 電報機器人消息格式
- 13. MVC網格提交
- 14. 交互式網格
- 15. 2維網格的不同隨機點
- 16. 交互式機器視覺網格提示
- 17. 與方形網格的最佳線交點
- 18. 以快速方式找到線和網格之間的交點
- 19. 點擊網格
- 20. 點擊提交按鈕發送Kendo網格行到服務器
- 21. 創建網格。將點插入網格
- 22. 在外部機器上的Selenium網格上啓動phantomjs節點
- 23. 正方形網格 - (旋轉)矩形相交 - 計算所有交點細胞
- 24. 頂點的3d立方體網格C++
- 25. 從每個網格點的點列表中取出隨機點
- 26. 2D交互式Javascript網格
- 27. 與圓相交的網格
- 28. CGAL網格交叉/碰撞
- 29. Bootstrap交換網格跨度
- 30. 交互式網格WPF
您的網格是否由100個單元格組成,並且您需要與每個網格線相交的交點?或者只是一個矩形,你需要與它的邊界相交? – MBo