アルゴリズムで16進グリッドを描画する最も簡単な方法は何ですか?それらをデータでどのように表示する必要がありますか?
たとえば、正方形のグリッドでは、xy座標を保存するだけで済みます。
アルゴリズムで16進グリッドを描画する最も簡単な方法は何ですか?それらをデータでどのように表示する必要がありますか?
たとえば、正方形のグリッドでは、xy座標を保存するだけで済みます。
したがって、六角形はAS3ゲーム用の優れたライブラリであり、研究に役立つ可能性のある六角形のクラスがいくつかあります。この記事には、Flashの六角形タイルに関する非常に優れた詳細が含まれています。
16 進マップ座標を管理する方法はいくつかありますが、そのほとんどは直観的ではなくレンダリングにのみ重要な xy 座標へのマッピングを要求します。通常は、何らかの形式の極座標が最適です。私はほとんどのベクトル計算を管理するための perl ライブラリを持っています。これは、AI やその他の検索ツリーのような非常に便利なポイント オブ リファレンス コンピューティングです。
http://en.wikipedia.org/wiki/Polar_coordinate_system
安い座席の場合、極座標はポイントを原点としてプロットし (標準の xy デカルト グラフのように)、ベースラインとしてベクトルを選択し (デカルトのように)、ポイントを (大きさ、度) として指定します。
これが 16 進マップで実際にホームランを打つのは、すべての純粋な角度が 60 度の倍数であることです。六角形の各辺に向き ((a,b,d,e,f,g) を割り当て、大きさと向きとしてベクトルを適用すると、いくつかの有用なプロパティが現れます。
1) すべての hex は、隣接する 2 つのベクトル (または、2 番目のベクトルが大きさ 0 または恒等要素である単一のベクトル) の合計として表すことができます。例: 1a+1b = 1a1b または 1b1a。いずれにせよ、これは 2 ヘックス、マグニチュード 2 のトラバーサルであり、原点 (0,0) からの一意のヘックスを指定します。2) 隣接しないベクトルは、次の規則を適用して常に 2 つの隣接するベクトルに単純化できます。 、1B + 1D = 1C、1C + 1E = 1D、1D + 1F = 1E、1E + 1A = 1F
これらの原則を念頭に置いて、実際の空間を横断しなければならないミサイルは、ベクトルをより小さな横断の連結または順序として保持する必要があります。1A + 1A + 1C + 1C は、2 ヘクス外側に移動した後、急激に (120 度) バンクして 2 ヘクス移動し、最初の方向から 2 ヘクス離れたところで通過を終了するが、コースから 60 度ずれているミサイルを表します。
ただし、ターゲティング コンピューターまたは結果として生じる爆発は範囲のみを気にする場合があるため、これらのルールを使用してこれらのベクトルを単純化することが重要になる場合があります。任意の 2 点間の最短距離を計算するには、単純にベクトルを連結して単純化します。
16 進マップを作成してレンダリングするのも非常に簡単です。プロパティを持つ原点として 16 進オブジェクトを作成します。大きさ = 0、ベクトル = NULL、ラベル (オプション) = 何らかの文字列 (私はこれを人間が読める値にするのが好きです)、名前= 0 (Magnitude と Vector の連結)、および Exits = Array (ワームホールなどを除いて 6 つのノードを設定します)。選択したピクセルを中心にして Origin をプロットし、マップの中心にします。16 進数をレンダリングします。マップの半径を選択してください
Foreach Magnitude, ---隣接するベクトルの各組み合わせをリングに入力します。これを行うにはいくつかの方法がありますが、最も簡単な方法は、単一のベクトルをベースとして選択し、マグニチュード ヘクスを適切な方向に移動し、60 度回転して周回することです。たとえば、マグニチュード 3 の場合、3E から開始し、3A、3B、3C、3D、3E、3F と進み、各ヘックスを最後に通過したヘックスと新しい単一ヘックス ベクトルの合計として計算します。---これらの 16 進数のそれぞれで、いくつかのトリガーを適用して、元のピクセルに対して中心ピクセルがどこにあるべきかを計算し、16 進数をレンダリングします。
それが誰かを助けることを願っています。ヘックスマップロック。それらをレンダリングするのは少し面倒です。