さて、私はこれらの画像を持っています:
基本的に私がやろうとしているのは、約 5 ~ 12 の六角形の「モザイク」を作成することです。それらのほとんどはほぼ中央に配置され、すべての線が交差します。
例えば:
おそらく力ずくで実行できることは承知していますが、Android向けに開発しているので、より高速で効率的で、プロセッサの負荷が少ない方法が必要です。
誰かが私に解決策を提供してくれますか、それとも正しい方向に私を向けることさえできますか?
さて、私はこれらの画像を持っています:
基本的に私がやろうとしているのは、約 5 ~ 12 の六角形の「モザイク」を作成することです。それらのほとんどはほぼ中央に配置され、すべての線が交差します。
例えば:
おそらく力ずくで実行できることは承知していますが、Android向けに開発しているので、より高速で効率的で、プロセッサの負荷が少ない方法が必要です。
誰かが私に解決策を提供してくれますか、それとも正しい方向に私を向けることさえできますか?
私が持っていたランダムなアイデアは、その6つのエッジのそれぞれの状態を追跡するクラスを定義することについてDeepakが言ったことに従うことです(たとえば、int[] neighbor
上のエッジが隣接している場合、どの隣接[0]状態で、隣接[1]状態右上端に隣がある場合、時計回りに進みます)
次に、画面上の各六角形について、その配列をバイナリ経由で整数に変換します。その整数に基づいて、ルックアップ テーブルを使用して、使用する六角形の画像 + 向き/反転方法を決定し、その六角形オブジェクトをその画像に割り当てます。
たとえば、最初のスクリーンショットで 4 つの隣接する中央の六角形を見てみましょう。その配列は[1, 0, 1, 1, 0, 1]
、上記のスキームに基づいています。neighbor[0] を最下位ビット (2^0) に、neighbor[5] を最上位ビット (2^5) にすると、 が得られ[1, 0, 1, 1, 0, 1] --> 45
ます。ルックアップ テーブルのどこかで、45 は、投稿した 7 つの基本六角形アイコンの中で、水平方向に反転された * 5 番目の六角形イメージを意味するように既に定義されています。
はい、ブルートフォースが関係していますが、六角形が収まるかどうかを確認するために回転していないため、「よりスマートな」ブルートフォースです。むしろ、より効率的なルックアップ テーブルが必要です。
*または、必要に応じて時計回りに 120 度回転させます ;)
ナイスでトリッキーな質問です。最初にできることは、どのエッジに線が接続されているかを指定する属性を持つ各画像のオブジェクトを定義することです。次に、レイアウトに画像を追加するときに、一方の画像の線のあるエッジが他方の画像の線のあるエッジに隣接するように回転させることができます。少し複雑かもしれませんが、少なくともこのようなことから始めていただければ幸いです。