2011-11-02 37 views
19

我有一個曲線點的列表,我想減少點的數量,但仍然保持曲線的整體形狀。如何在保持整體形狀的同時減少曲線中的點數?

基本上,我想從這個去:

enter image description here

要這樣:

enter image description here

所以算法將刪除冗餘點,但保留那些真正定義形狀(如曲線底部的點)。有沒有已知的算法來做到這一點?我希望有,但我不確定在Google上搜索什麼。任何幫助,將不勝感激。

+5

我沒有任何算法你,但我們通常所說的這個過程爲'頂點decimation'。也許這將有助於您的谷歌搜索。 –

回答

13

這有幾種算法。

最簡單的一種可能就是不斷移除相鄰點之間的角度最接近180度的點,直到某個閾值,或者直到達到所需的點數。通過使用貝塞爾曲線,您可能會得到更好的近似值(或者如果您喜歡的話,可以使用更少的點數)。

+0

謝謝,但我認爲第一個建議不適用於我,因爲我的數據不像示例中那樣乾淨。可以有很小的雜點,彼此非常接近,無論角度如何,都應該減少到一個點。使用貝塞爾曲線可能會使問題更復雜,而不是簡化它,並使渲染速度變慢。 –