1

大量の頂点とエッジが与えられます。頂点には x 座標と y 座標が与えられ、すべてのエッジには 2 つの頂点があります。

ズームの場合、簡単な解決策は、マップ上のすべてのエッジを描画するのではなく、指定された x 座標と y 座標に頂点があり、画面が拡大されているすべてのエッジを描画することです。しかし、ズームインしている領域を通過するエッジをどのように描画すればよいでしょうか?

私が思いつく唯一の解決策は、すべてのエッジを直線的に通過し、エッジの各端の x 座標と y 座標を見つけることによって、ズームインしている領域にエッジが入るかどうかを計算することです。誰もこれに対する卑劣な解決策を持っていますか?

また、パニングに関しては、ユーザーが見ている領域の周りに同じサイズのボックスを 8 つロードするのが最善の解決策ではないでしょうか?

編集:言い忘れましたが、さまざまなエッジには情報が含まれているため、ズームレベルごとにさまざまな種類のエッジが描画されるため、独自のズームを作成することを好みます。

4

1 に答える 1

1

つまり、Java で実行したいのですが、どのグラフィック ライブラリを使用するかを指定していません。あなたの例のように描画がより複雑で集約的になっている場合は、自分でズームを計算するのではなく、OpenGLのようなより洗練されたものを使用する必要があります。Java で使用するには、ラッパー ライブラリJOGLがあります。

OpenGL は頂点と形状を描画するツールを提供し、カメラを使用してビューを整理し、ズームします。

そのため、最初にグラフィックス プログラミングに慣れることをお勧めします (どのプログラミング言語やどのライブラリを使用するかは問題ではありません)。

これらのチュートリアルが役に立ちました:

アップデート

  • OpenGL は 2D の描画に最適です (チュートリアルで学習します)。
  • 特に、ズーム レベルに応じて描画するものが変わる場合、少なくともコンテンツが変更されるたびにシーン全体がレンダリングされるため、グラフィックス ライブラリが役立ちます。レンダリングする前にズーム レベルを確認し、それに応じて描画することができます。
于 2013-03-19T12:14:52.740 に答える