web-dev-qa-db-ja.com

グラフィックプログラマーは、画像を変更しないレンダリング頂点をどのように処理しますか?

だから、タイトルは少し厄介です。背景を説明してから、質問します。

背景:私はWebとして働いています [〜#〜] gis [〜#〜] アプリケーション開発者ですが、私の予備です私は地図のレンダリングとデータ交換フォーマットの改善に取り組んできました。私は2D空間でのみ作業します。

私が遭遇した興味深い問題の1つは、ポリゴンを小規模に(ズームアウトして)レンダリングしているときに、頂点の多くが冗長になることです。極端な場合は、1つのピクセルのみを占める500,000の頂点を持つポリゴンがある場合です。このデータをブラウザに送信する場合は、これらの頂点を最大499,999個省略するのが理にかなっています。これを実現する1つの方法は、サーバー上で画像をレンダリングし、それをPNGとして送信することです。出来上がり、それがポイントです。ただし、インタラクティブにできるように、SVG(またはcanvas、webgl)でレンダリングできるブラウザにデータを送信したい場合もあります。

問題:最新の地理データセットを使用すると、SVGのレンダリング機能を非常に簡単にオーバーロードできることがわかりました。これらの制限に対処するために、私は特定のスケールとマップ範囲のデータセットを視覚的にロスレスに削減する方法を理解しようとしています(および、必要に応じて、既知のマップピクセルの幅と高さ)。

Douglas-Peuckerアルゴリズム を使用するだけでデータサイズが大幅に削減され、ポリゴンを1ピクセル以内に忠実に保つことができたと思います。残念ながら、Douglas-Peuckerはトポロジを保持しないため、ポリゴン間の境界線のレンダリング方法が変更されました。試して目的に適応する他のアルゴリズムを簡単に見つけることはできませんでしたが、CS /アルゴリズムのバックグラウンドがあまりなく、それらを見ても認識できない可能性があります。

10
canisrufus

あなたが探しているのは2dlevel of detailalgorithms

あなたがそれらの強調表示された用語を検索するならば、グーグルでこれについて多くの文書があります。

stackoverflowに関するこの質問には、2Dレベルの詳細レンダリングで探している情報が含まれています。

3
user7519