問題タブ [hexagonal-tiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
14 に答える
54974 参照

math - 六角形の地図タイルで地球を覆う

多くの戦略ゲームは六角形のタイルを使用します。主な利点の 1 つは、タイルの中心と隣接するすべてのタイルの間の距離が同じであることです。

六角形のタイル システムを従来の地理システム (経度/緯度) と結合することについて、誰か考えがあるかどうか疑問に思っていました。地球を六角形のタイルで覆い、地理座標をタイルにマッピングできると面白いと思います。

誰かがこれに近いものを見たことがありますか?

アップデート

各分割が同じ表面積を持つように、球の表面を細分化する方法を探しています。理想的には、隣接するサブディビジョンの中心は等距離になります。

0 投票する
2 に答える
3507 参照

wpf - WPF「16進グリッド」コンポーネント

WPFカスタムコントロールの世界に飛び込んで、HexGridコントロールを設計するための最良の方法は何でしょうか?お気に入りの卓上ウォーゲームを考えてみてください。または、同じように、卓上戦争ゲームの誇り高い歴史からデザインを盗むお気に入りのビデオゲーム。

基礎となるモデルは、Mapクラスの一部として1つの重要なメソッドを公開します。

16進数には、関連するすべてのデータが含まれています(現時点では、1:1を背景色にマッピングする地形列挙です。小さいものから始めます...)。

関連する可能性のある制約:
マップのサイズは変更されず、16進データは非常に予測可能な時間に変更されます(常にユーザーの操作に直接応答します)。

理想的には、コンポーネントが拡張されてコンテナーがきれいに満たされ、XAMLで直接宣言できるようになります。

私が探しているのは、既製のコンポーネントではなく、これを構築するために必要なことの大まかな概要です。

*私はこのアドレス指定スキームにかなり賢いのですが、どうやら私はパーティーに遅れているようです。

0 投票する
2 に答える
7294 参照

wpf - 六角形のグリッドを作成する

私はこのような「グリッド」を実行する必要があります。

ハーモニックテーブル ハーモニックテーブル

リスト内のすべての奇数の音符が一番下に移動するListViewwithを作成しようとしています...ItemsSource="List<Note>"

ListView正しいコントロールですか?

次のオブジェクトの近くにある面で正確な六角形を描画するにはどうすればよいですか?

編集:六角形の描画が解決されました...これはxamlです:

0 投票する
2 に答える
4815 参照

flash - Flashで16進グリッドを描画しますか?

アルゴリズムで16進グリッドを描画する最も簡単な方法は何ですか?それらをデータでどのように表示する必要がありますか?

たとえば、正方形のグリッドでは、xy座標を保存するだけで済みます。

0 投票する
2 に答える
386 参照

sql - 六角形フィールド内の隣接セルの選択

3 次元の六角形の空間を想像してみてください。

各タイルには座標 XYZ があります。同じ平面内の特定のセルの隣人を選択する必要があります。SQL では次のようになります。

しかし、私はこの方法が好きではありません。おそらく誰かがより最適なアルゴリズムを知っていますか? ありがとうございました!

0 投票する
5 に答える
15437 参照

math - 三角/六角座標(xyz)の生成

六角形グリッドの xyz 座標を生成する反復関数を考え出そうとしています。16 進数の開始位置 (簡単にするために 0,0,0 とします) を使用して、次に示すように、連続する六角形の「リング」ごとに座標を計算します。

これまでのところ、私が思いついたのはこれだけです(javascriptの例):

各リングには前のリングよりも 6 個多くのポイントが含まれており、各 120° ベクトルには中心からのステップごとに 1 つの追加ポイントが含まれていることがわかっています。私はまたx + y + z = 0、すべてのタイルについてそれを知っています。しかし、以下のシーケンスに従う座標のリストを生成するにはどうすればよいでしょうか?

0 投票する
6 に答える
4352 参照

php - 六角形のフィールド上でらせん状にセルを作成するアルゴリズム

六角形のフィールドでらせんによってセルを作成するためのアルゴリズムを見つけるのに役立ちます。

画像を見てください:

代替テキスト

無次元の 2 次元配列を想像してみましょう。X 軸は青い線、Y 軸は水平、らせんは赤です。

中心点 x0y0 から点 N までスパイラルでセルを追加する必要があります

問題を解決する方法を教えてください。ありがとうございました!

0 投票する
1 に答える
28849 参照

math - ピクセル座標への六角形グリッド座標

六角形のグリッドを使用しています。非常にエレガントなため、この座標系を使用することにしました。

グリッド

この質問は、座標自体の生成について説明しており、非常に役立ちます。私の問題は、これらの座標を実際のピクセル座標との間で変換することです。座標がx、y、zの六角形の中心を見つける簡単な方法を探しています。ピクセル座標の(0,0)が16進座標の(0,0,0)にあり、各六角形のエッジの長さがsであると仮定します。x、y、zはそれぞれ座標を軸に沿って一定の距離だけ移動させる必要があるように思えますが、奇妙な方法で相互に関連しているため、頭を完全に包むことはできません。

反対方向に移動して、ピクセル座標の任意の(x、y)ポイントを、そのポイントが属する16進数に変換できる場合のボーナスポイント。

0 投票する
2 に答える
1123 参照

algorithm - 3D hex-like タイル マップでのレイトレーシング (LoS)

ご挨拶、

六角形のタイル マップの 3D バリアントを使用するゲーム プロジェクトに取り組んでいます。タイルは実際にはヘックスではなく立方体ですが、ヘックスのように配置されます (2D から 3D に外挿するために正方形を立方体に変えることができますが、ヘックスの 3D バージョンがないため)。詳細な説明ではなく、4x4x4 マップの例を次に示します。

(任意のタイル (緑) とそれに隣接するタイル (黄色) を強調表示して、全体がどのように機能するかを説明していますが、隣接機能は問題ではなく、既に解決されています。)

タイルを表す構造体型があり、マップはタイルの 3D 配列として表されます (Mapいくつかのユーティリティ メソッドを追加するためにクラスにラップされますが、あまり関係ありません)。各タイルは完全な立方体の空間を表すと想定されており、それらはすべてまったく同じサイズです。また、隣接する「行」間のオフセットは、タイルのちょうど半分のサイズです。

コンテキストはこれで十分です。私の質問は次のとおりです。
と の 2 点の座標が与えられた場合、Aとの間のB直線が交差するタイル (または、それらの座標) のリストを生成するにはどうすればよいですか?AB

これは後で、見通し線や充電パスの合法性などを判断するなど、さまざまな目的に使用されます。

ところで、これは役に立つかもしれません: 私のマップは (0,0,0) を参照位置として使用します。((y+z) mod 2) * tileSize/2.0マップの「ギザギザ」は、各タイルを「正常な」デカルト座標系での位置から右にオフセットすることとして定義できます。ギザギザでない行の場合は 0 になります。が 1の行の場合(y+z) mod 2、0.5 タイルが得られます。

私は、.Net Framework 4.0 をターゲットとする C#4 に取り組んでいます。しかし、特定のコードは本当に必要ありません。奇妙な幾何学/数学の問題を解決するためのアルゴリズムだけです。私はこれを無駄に解決するために数日間試みてきました。そして、「視覚化」するために紙に全体を描こうとしても役に立ちませんでした:( .

ご回答ありがとうございます。

0 投票する
5 に答える
1390 参照

c++ - クラス C++ を使用して再帰的に作成されたリンク リスト

C++ を使用して、再帰的に六角形のグリッドを作成しています (乗算リンク リスト スタイルを使用)。隣接するタイルを簡単に作成できるように設定しましたが、再帰的に行っているため、特定のタイルに対して 6 つの隣接タイルすべてを実際に作成することしかできません。明らかに、これにより重複したタイルが作成されており、何らかの方法でそれらを取り除こうとしています. クラスを使用しているため、null ポインターのチェックが機能していないようです。Tile クラスから int への変換に失敗しているか、何らかの方法で変換しても適切に変換されていません。作成時にすべてのポインターを明示的に NULL に設定していますが、それがまだあるかどうかを確認すると、初期化以来一度も触れていないにもかかわらず、そうではないと表示されます。これを行うための特定の方法はありますか?なんらかの NULL なしではグリッドをトラバースすることさえできません

これが私の関連コードの一部です。はい、恥ずかしいのはわかっています。

タイル クラス ヘッダー:

タイルの初期化:

隣接するタイルの作成:

最後に、グリッドをトラバースします。

重要な行は「if(inputTile->neighbor[x])」であり、「if(inputTile->neighbor[x]==NULL)」にするか、何をするにしても、適切に処理されません。ああ、リストを完全に設定していないことも承知しています。今は一方向だけです。