2016-02-29 90 views
0

我有一個繪製爲5個座標的UIBezierPath的多邊形。它正確顯示和計算面積,現在我想要一個按鈕,開始填充形狀,直到鬆開按鈕並計算填充區域的百分比。我怎樣纔能有效地做到這一點?計算多邊形/形狀/ UIBezierPath中的填充百分比

enter image description hereenter image description here

在左邊的圖像有當前實現中,正確的是應該是什麼樣的邏輯被實現了。

預先感謝您!

回答

0

被填充的多邊形有五個頂點。假設它是凸的,描述填充區域的多邊形具有五個或六個頂點,用水平線截斷原始。

將它們的頂點作爲@[x,y]對的兩個數組以及apply this formula分別收集到多邊形中以計算面積。

被填充的多邊形是不變的,所以它的面積只需要計算一次。對於填充多邊形,只要填充線y大於任何頂點y,該頂點的術語就會變成常量,因此您可以在那裏節省一些計算量。但是,爲了讓它工作,我會在每次填充線改變時重新計算整個填充區域。五或六個頂點是花生,FPU方式。

+0

首先,感謝您的回答。我明白你的意思,這就是我正在申請填​​充多邊形的公式,事實是,如何在按下按鈕時用動畫「填充」填充區域?這個想法是開始用動畫填充多邊形,當釋放按鈕時讓該區域填充,但要繪製UIBezier路徑,您需要先了解座標。 – iDeC

+0

問題是如何執行填充多邊形的動畫,或者如何在按下按鈕時執行該動畫,或者如何計算其面積? – danh

+0

如何動畫的概念是'CAKeyframeAnimation'。將外部多邊形的座標保持爲四周,與填充線「交叉」以獲得填充線的幾個y值處的填充座標(填充線與外部多邊形頂點相交的每個y值是最小集),那些中間多邊形是關鍵幀動畫的'values'數組。按照原始答案中的描述計算區域。 – danh