1

例の設定

ここで質問する前に、問題の解決策をどこでも探してみました。私の問題は、特定のアルゴリズムがソリューションに役立つことを理解するために、数学や統計があまり得意ではないことです。

私の例では、散布図のように見えます。デカルト座標面にランダムに配置された点の集まりです。この平面に特定の半径の円を描けるようにしたいです。円には、可能な限り多くのポイントが含まれている必要があります。

この円を描くのに最適な点を計算するには、どのような手順を踏む必要がありますか?

を探しています...

グラフのどこから描き始めるべきか (円の中心点) を把握するために必要な一連の手順を教えてください。あなたがコードを持っているなら、私は必ずしも知っているとは限らない言語を解読するのが得意ですが、これを Lua で書きます (残念ながら C の部分にはアクセスできません)。

ソリューションがどのように機能するかを本当に理解したいので、情報源や説明に感謝します。参考までに、パフォーマンスは非常に重要ですが、現時点で解決策を探しています。

ボーナス:)

私はこれを書いているので、私のコードで実行したい他の高度な機能について質問したほうがよいと思いました。しかし、実際にドアに足を踏み入れると、後でいつでもこれらを理解できます。

  • 円の中心から離れたポイントは、近いポイントよりも全重量に近くなります。重みは単純な線形関数にすることができます。半径が 10 の場合、中心から 1 離れていると全重量の 10% にすぎず、中心から 2 離れていると全重量の 20% にすぎません。中心からちょうど 10 離れていると、100% の重みが得られます。

  • 時間が導入され、円の中心もグラフ上の点になります (この点は他の点の一部ではなく、それらと一緒に計算する必要はありません)。円の中心は一定の速度で移動します。時間の経過とともにすべてのドットのすべての重みが減衰するため、中心に十分近い点を選択する必要があります。したがって、円を描く速度は速ければ速いほどよいのです。(これは非常に理論的なものであり、崩壊がどのようなものになるかはわかりません)。

これを読んで私の質問を考えてくれてありがとう!追加の詳細を提供したり、質問に答えたりできます。

4

2 に答える 2

1

より多くの数学を必要とし、正確な 2 つの点の最初の点に拡張する、最適な円を見つけるためのおそらくより高速な方法があります。

関心のある領域をカバーするグリッドを取り、このグリッドでポイントを描画した場所に 1 を、描画していない場所に 0 を入力します。ここで、グリッド内の各ポイントのスコアを計算する必要があります。これを行うには、グリッド内の各ポイントの値に、そのポイントがスコアリングするポイントからの距離に応じた重みを掛けてから、結果を合計します。これは、基本的な質問 (円内のポイントの重みは 1、それ以外の場合は 0) と、重みが徐々に変化する最初の高度なポイントをカバーしています。

このように問題を見ると、グリッドに適用する必要がある 2 次元フィルターがあります。適用後は、結果の最高得点を見つけるだけです。これを明らかに行う方法はかなり遅くなりますが、高速フーリエ変換を使用してこの種のことを高速化できることが判明し、数学ライブラリを使用してこれを計算できます。

数学や統計学の経験がない場合は、これについての適切な説明が必要になるでしょう。残念ながら、私が作成できるよりも優れています。多くのことが行われましたが、私が本当に気に入った説明は見つかりませんでした。http://www.analog.com/static/imported-files/tech_docs/dsp_book_Ch24.pdfを見ることができます。これは、 http://archive.gamedev.net/archive/reference/programming/features/imageprocでも参照されています。 /page2.html .

于 2013-07-21T08:08:59.037 に答える