我有一個曲線點的列表,我想減少點的數量,但仍然保持曲線的整體形狀。如何在保持整體形狀的同時減少曲線中的點數?
基本上,我想從這個去:
要這樣:
所以算法將刪除冗餘點,但保留那些真正定義形狀(如曲線底部的點)。有沒有已知的算法來做到這一點?我希望有,但我不確定在Google上搜索什麼。任何幫助,將不勝感激。
我有一個曲線點的列表,我想減少點的數量,但仍然保持曲線的整體形狀。如何在保持整體形狀的同時減少曲線中的點數?
基本上,我想從這個去:
要這樣:
所以算法將刪除冗餘點,但保留那些真正定義形狀(如曲線底部的點)。有沒有已知的算法來做到這一點?我希望有,但我不確定在Google上搜索什麼。任何幫助,將不勝感激。
謝謝,我結束了使用Douglas-Peucker算法,這很好用。 –
@ this.lau_你可以請你分享你的這個算法的實現。 – EmptyData
這有幾種算法。
最簡單的一種可能就是不斷移除相鄰點之間的角度最接近180度的點,直到某個閾值,或者直到達到所需的點數。通過使用貝塞爾曲線,您可能會得到更好的近似值(或者如果您喜歡的話,可以使用更少的點數)。
謝謝,但我認爲第一個建議不適用於我,因爲我的數據不像示例中那樣乾淨。可以有很小的雜點,彼此非常接近,無論角度如何,都應該減少到一個點。使用貝塞爾曲線可能會使問題更復雜,而不是簡化它,並使渲染速度變慢。 –
我沒有任何算法你,但我們通常所說的這個過程爲'頂點decimation'。也許這將有助於您的谷歌搜索。 –