請問如何撰寫多邊形範圍選取?

HI,請問有前輩撰寫過圖形的多邊形選取功能嗎?

因要讓使用者自由選定區域後取得區域的Pixels座標, 故有此需求。

目前只寫到將所選擇的點算斜率連線、並將這些線段轉化為XY table..

但是卻不知如何取得所選擇範圍的座標..

有想過要用一條條掃描的、因為是不規則多邊形(不一定都是凸多邊形)、

沒辦法利用單數點與雙數點的算法來填滿區域後取得座標值...

不曉得有沒有前輩有自行撰寫過該function?...

PS: 這個案子沒有要用到vision 所以沒有相關VI.. Orz...

而且 困難的是 斜邊會出現像是階梯的斜線 也使得掃描方法便的異加困難...

![](upload://j0YWpubiOwKlXi9nyn1lMzdtiGV.jpeg)![](upload://dPWkYT6vwCPDe2tqD6fR8UWfNa8.jpeg)

SurfersParadis40722.4377199074

可以寄出原始(布林)資料嗎?
這可以簡單用取代的方式處理~

以下模擬檔案,請服用

0628.vi

計算方式未最佳化,單純只是想法,需要增加執行效率可修改內容。
caeru40722.6673958333

[QUOTE=caeru] 可以寄出原始(布林)資料嗎?
這可以簡單用取代的方式處理~

以下模擬檔案,請服用
0628.vi

計算方式未最佳化,單純只是想法,需要增加執行效率可修改內容。
[/QUOTE]

感謝幫忙@@! 還真的沒想過這樣寫@@:

但是我在RUN的狀況下,在某些特定圖形會溢出、

可否開導一下! 小弟正在努力多測幾遍跟看懂中~

0628 with value.vi

![](upload://qzabF5iLotBU2yR4iXMtB5luTRi.jpeg)

 

 

這應該說是尋找非圈選區的方式

先將圖形變為0與1的矩陣
預設非圈選區0,0值為-1
接下來開始依序搜尋矩陣上所有點
當一個點的上下左右其中一個值為-1
則代表該點與非圈選區相鄰,將該點值改變為-1
搜尋完後,因為搜尋方向的問題,會有些點可能不會被搜尋到,
因此需要以旋轉的方式來改變搜尋方向,
轉四次後又回到原本的圖形,同時可以將所有非圈選區找出,此時只要值大於-1的皆為圈選區。

至於有溢出的問題,那部份應該是沒有被找到,所以值還是0,但是判斷條件是值大於-1,所以就被誤判了
這部份是因為我耍白痴把轉秩當作旋轉= =

以下更新後檔案:

0629.vi

感謝大大提供另一種方式、但是小弟駑鈍還沒搞懂

先借我收藏一下^^:"

目前寫了一個程式還算符合小弟需求、至於有沒有BUG則不得而知..

測試了很多複雜多邊形都還沒問題。

速度還不錯、240*240的陣列約2~3 ms可以處理完成。

一部分是利用公式計算所需填充長度之後用replace方式填值

(複數點per scan line)

另一部分是:

目標列=n    假設N列上有3點V1,V2,V3, 則V1~V2兩點位置段、

其上一列的相對位置必為填滿(範圍內),來做是否填滿的判別。

感謝提供想法的大大幫助

 

![](upload://mMvrYkCiNxwksdbJd11ClU5jR91.jpeg)

![](upload://2yMe0zQECFQA8BxK5b33a2Og9aW.jpeg)

SurfersParadis40723.6472800926

=/////=  發現BUG 檔案連結已經更新~ 

 

!!!!!!!!!!!!!! 再次更新..

用了更複雜的圖形 發現還是有溢出@@

有需要者還是參考caeru大大的範例><!!

小弟不在此耽誤別人 故移除檔案連結><!!

再次感謝大大!!

SurfersParadis40723.9033101852