4
A
回答
3
我的建議是做遵循兩個步驟:
- 找到點
- 找到一個凸多邊形的最小邊界框可以在O(N)來解決的convex hull,這個algorithm以下
編輯:好的,其實上述2個步驟是不足以成爲一個正確和接受的答案。
在這兩個步驟之前,您必須先對該組點進行預處理。
- 檢查是否有3個或更多點共線,除去兩個端點以外的點。
- 第1步之後,你現在應該得到一組沒有3點或多點共線的點。
檢查集合的大小:如果它只剩下1點或2點,你必須特別處理它們(對於1點,你可以找到任何最小的方框來包含它自己的方法; 2點也許使他們成爲邊框的對角線)
如果結果集已經離開> = 3分,那麼只要按照我原來的2個步驟:凸包+旋轉卡鉗
歡呼。
2
看起來這是一個minimzation problem with constraints。
你需要找到4條線路:
l1: a1x + b1y + c1 = 0
l2: a1x + b1y + c2 = 0
l3: a2x + b2y + c3 = 0
l4: a2x + b2y + c4 = 0
所以,你有8個變量:a1,a2,b1,b2,c1,c2,c3,c4
您需要減少:
Sum(distance(li,point_j) | i from [1,4], j - over all points)
受到約束:
l1 dot l3 = 0 [ensuring rectangle - cosine=0->angle between lines=90]
for each point j:
a1xj + b1yj + c1 >=0 ['above' l1]
a1xj + b1yj + c2 <= 0 ['below' l2]
(similarly for l3,l4)
請注意,您可以更改目標函數以匹配其他最小化標準,如最小面積。
+0
這是不必要的複雜。 –
相關問題
- 1. OnRectangleToolClick:如何識別矩形?
- 2. 識別矩形形狀
- 3. 刪除ListBoxItem周圍的矩形
- 4. SVG文本週圍的矩形邊框
- 5. 點擊UIImageView周圍的識別器
- 6. 如何給定的矩形內識別子三角形在該矩形
- 7. 如何獲得矩形周圍的最小長度電路?
- 8. Android imagebutton:如何刪除圖像周圍的彩色矩形?
- 9. 如何在java中的鼠標光標周圍繪製矩形?
- 10. 周邊矩形
- 11. 識別圖像中的矩形區域
- 12. 如何用svg在矩形周圍創建「發光」?
- 13. Qt如何在矩形周圍繪製邊框?
- 14. 如何在輪廓周圍繪製矩形?
- 15. 如何在這些圖表周圍獲得白色矩形?
- 16. 如何在pictureBox1邊框周圍畫一個矩形?
- 17. 如何在標籤控件周圍繪製矩形?
- 18. 如何在WPF中的多個形狀周圍獲取單個邊界矩形
- 19. 如何從矩陣中識別類別
- 20. 如何識別點擊上繪製的矩形在畫布上
- 21. 如何識別矩形的其他角落?
- 22. 如何在MATLAB中識別和裁剪圖像中的矩形
- 23. 如何在openCV中識別不完整的矩形
- 24. 延遲繪製矩形周圍形狀部
- 25. 如何識別四邊形多邊形(非矩形)碰撞檢測?
- 26. 形狀識別(識別手繪基本形狀 - 矩形,橢圓形,三角形等)?
- 27. 如何刪除複選框中的複選框(安卓)周圍的矩形
- 28. 如何在Leptonica中的圖像(PIX)中的矩形周圍創建邊框?
- 29. 如何識別AutoHotkey中的IP範圍
- 30. 如何在Silverlight網格的列周圍顯示「選擇突出顯示」 - 矩形?
任何有限的點集都有許多周圍的矩形。你需要告訴你想要哪一個。最小面積?最小的周長?最漂亮的看? –
構建凸包,然後以O(n)時間複雜度(其中n是凸包中的點數)構建矩形。 –
@ n.m。最好找到最漂亮的一個。作爲一個人,圖像的第一印象產生一個正方形,儘管它在數學上是正確的。 – Verilocos