はじめに
正確な物理モデリングには、ハイポリカードが必要です。 カードの精度が高いほど、より多くのメモリを消費し、高さを取得するためにより多くのデータを処理する必要があります。 スプライン補間を使用すると、現在の緯度と経度に便利なステップで、任意の解像度のグリッドを取得できます。
仕事内容
パート1.データの準備パート2.均一なグリッドの生成パート3.分析サーフェスの作成
サブタスクの目的
すべての開始点を含む均一なグリッドからスプラインサーフェスを取得します。 任意のステップで2つの座標に高さ計算を実装します。
アルゴリズム
アルゴリズムを検索する際の最大の問題は、高さマップ(補間)のすべての必要なポイントを含む接続されたスプライン(境界条件)からサーフェスを作成する適切な説明を見つけることでした。
また、初期データと比較して、サーフェス上のパーツの数が減少するだけであることに留意する必要があります。
シャノン-コテルニコフの定理を思い出すのに十分です
高さマップからスプラインサーフェスを作成するアルゴリズムの優れた説明は、
E。A. Nikulin著の本
「コンピュータージオメトリとコンピューターグラフィックスアルゴリズム」に記載されています。 この領域には多くの理論的な材料と数学が含まれています(ボリュームサーフェスの作成を可能にするフラクタルアルゴリズムによるサーフェス生成へのアプローチの説明もあります)。
数学は本で見つけることができ、実装は記事の最後に添付されるので、ここでは数学的な計算とコード例を示しません。
処理結果
均一なグリッドを処理した結果、スプライン係数を持つかなり大きなファイルが得られます。
1 33
3.30000000000000E+0001 1.00000000000000E+0000 -1.51788304147970E-0018 -1.95156391047391E-0018
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.50000000000000E+0002 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1 34
3.40000000000000E+0001 1.00000000000000E+0000 8.67361737988404E-0019 2.38524477946811E-0018
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.50000000000000E+0002 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1 35
3.50000000000000E+0001 1.00000000000000E+0000 -2.60208521396521E-0018 -3.03576608295941E-0018
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
2.16840434497101E-0019 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
1.50000000000000E+0002 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000
…
つまり、均一なグリッドの4ポイントごとに、独自のスプラインを作成しました。このスプラインは、2番目の導関数に沿ってすべての隣接する導関数と分離できません。 これで、スプラインの任意のポイント、したがってマップ全体の高さを決定できるようになりました。
ご覧のとおり、スプライン係数の行列は非常にまばらであるため、圧縮率は高くなります。 データ処理速度を落とすことなく、カードが占有するスペースを節約できます。
結果の表面の例:
結論
マップを自由に移動できる機能は、アプリケーションソフトウェアの開発に大きな可能性をもたらします。 ランドスケープの詳細を動的に変更するアルゴリズムは、完全な強度(
LOD 、
MegaTexture )で
機能し始めます。 高さは一定の複雑さで計算されます(行列の乗算)。
次に、投影ではなくジオイド上に直接マップを作成して、地球の領域または地球の表面全体を高精度でシミュレートできます。 そして、それはすべてファンタジーに十分です。
この結果を達成する他のアルゴリズムがあります。 それはすべてタスクに依存します。 提案されたアプローチは、反射の理由とタスクの解決への小さな推進力のみを提供します。
Delphi7のジェネレーターソース