n ポイントの 2D グラフを取得し、それを r ポイント (r は n 未満の特定の数) に減らす必要があります。たとえば、合計ポイント数がわずかに異なる 2 つのデータセット (1021 と 1001 など) があり、両方のデータセットに 1000 ポイントを強制したいとします。Lang Simplification と Douglas-Peucker の 2 つの単純化アルゴリズムを認識しています。少し異なる要件を持つ以前のプロジェクトでLangを使用しました。
私が探しているアルゴリズムの特定のプロパティは次のとおりです。
1) 線の形状を維持する必要があります
2) データセットを特定のポイント数に減らすことを許可する必要があります
3) 比較的速い
この投稿では、さまざまなアルゴリズムのメリットについて説明します。Java または Groovy での実装に関するアドバイスを求めて、2 番目のメッセージを投稿します (車輪を再発明する理由)。
上記の要件 2 が気になります。私は、出力ポイントの正確な数を指示できるかどうかを知るほど、これらのアルゴリズムの専門家ではありません。私が使用した Lang の実装は、lookAhead、tolerance、および Point の配列を入力として使用したため、出力のポイント数を指定する方法がわかりません。これは、私の現在のニーズの重要な要件です。おそらくこれは、使用した Lang の特定の実装によるものですが、Lang に関する多くの情報を Web で見たことがありません。代わりに Douglas-Peucker を使用することもできますが、出力のポイント数を指定できるかどうかはわかりません。
私はこれらのタイプのアルゴリズムやあらゆる種類の数学の専門家ではないことを付け加えておく必要があります. 適切なソリューションのためにパフォーマンスを犠牲にします。