http://www.time.com/time/covers/20061030/where_we_live/のような地図を視覚化したいと思います。
これをopenglまたは処理で行うことはできますか? どのように?
http://www.time.com/time/covers/20061030/where_we_live/のような地図を視覚化したいと思います。
これをopenglまたは処理で行うことはできますか? どのように?
これを行う最も簡単な方法は3Dではなく、基本的なアイソメトリックテクニックとオーバーペイントを使用することだと思います。
マップを取得し、遠近法を提案するために半分の高さに拡大縮小して、キャンバスに描画します。
次に、元のマップと同じ大きさの空の透明なビットマップを作成し、マップ上にあるかのようにデータを含む淡いピンク色の円を配置します。このビットマップも半分の高さにスケーリングし、元のマップ上に描画します。
この後、別の円を作成しますが、円の半径を1ピクセル小さくし、色をもう1色濃い赤にシフトします。もう一度半分の高さに拡大縮小し、既存の構図の上に描画しますが、y方向に1ピクセル高くします。マップ上の最大の円が半径0に達し、最高のピークが描画されるまで、この手順を繰り返します。
複雑な3Dジオメトリを必要とせずに、例のマップに非常によく似たものを作成する必要があると思います。
視覚的には、次の場合にさらにTIMEマップに似ています。
-逆指数式を使用して、ステップごとに円のサイズを縮小します。提案されたアルゴリズムでは、スパイクはかなり退屈な線形(円錐形)であり、それほど高くはなりません。
-元のマップの輪郭を透明マスクとして使用して、各データレイヤーを制限します。半分の高さにスケーリングする前にこれを行ってください。これにより、データスパイクがマップの形状に制限され、境界を越えて海に流出するのを防ぎます。
もちろん、このアルゴリズムは、すでに楕円を使用して半分の高さでデータレイヤーを描画し、それらをマップ上に直接描画することで最適化できます。円/レイヤーの方法は、基本的なテクニックをよりよく示しており、アウトライン制限の手順を簡単に実行できます。
個人的には、顔のグリッドを使用し、米国の地図に対してカリングしてから、リンクに示されている縮尺に従って各ポイントを持ち上げて色付けすることをお勧めします.
実際には、NielsK によって概説されている方法よりも簡単になると思います。難しい部分は、必要なデータを解析しやすい形式で取得することだけです。