Étant donné un tableau datomes ABABAB dans un motif hexagonal, comment puis-je utiliser Mathematica pour créer avec un réseau hexagonal (infini) avec ce tableau donc chaque atome A est entouré uniquement datomes B et vice-versa.

Commentaires

  • Hola Jose , bienvenue sur Mathematica.SE. Voulez-vous dire un treillis graphique, un tracé nécessairement fini ou une description analytique dun treillis? Vous pourriez probablement donner plus de détails sur ce que vous comptez faire avec cela, donc cest plus facile de vous aider.
  • un réseau fini donné par un motif hexagonal avec 2 atomes par exemple comme ceci google.es/… mais avec 2 atomes au lieu dun (graphène)
  • Connexes: 19165 , 14632 .
  • Également associé: Démonstration de Wolfram
  • Certaines connaissances en physique du solide le facilitent.

Réponse

En 2D

unitCell[x_, y_] := { Red , Disk[{x, y}, 0.1] , Blue , Disk[{x, y + 2/3 Sin[120 Degree]}, 0.1] , Gray, , Line[{{x, y}, {x, y + 2/3 Sin[120 Degree]}}] , Line[{{x, y}, {x + Cos[30 Degree]/2, y - Sin[30 Degree]/2}}] , Line[{{x, y}, {x - Cos[30 Degree]/2, y - Sin[30 Degree]/2}}] } 

Cela crée la cellule dunité

Graphics[unitCell[0, 0], ImageSize -> 100] 

Cellule dunité

Nous le plaçons dans un treillis

Graphics[ Block[ { unitVectA = {Cos[120 Degree], Sin[120 Degree]} ,unitVectB = {1, 0} }, Table[ unitCell @@ (unitVectA j + unitVectB k) , {j, 1, 12} , {k, Ceiling[j/2], 20 + Ceiling[j/2]} ] ], ImageSize -> 500 ] 

Réseau hexadécimal 2D


En 3D

unitCell3D[x_, y_, z_] := { Red , Sphere[{x, y, z}, 0.1] , Blue , Sphere[{x, y + 2/3 Sin[120 Degree], z}, 0.1] , Gray , Cylinder[{{x, y, z}, {x, y +2/3 Sin[120 Degree], z}}, 0.05] , Cylinder[{{x, y, z}, {x + Cos[30 Degree]/2, y - Sin[30 Degree]/2, z}}, 0.05] , Cylinder[{{x, y, z}, {x - Cos[30 Degree]/2, y - Sin[30 Degree]/2, z}}, 0.05] } Graphics3D[ Block[ {unitVectA = {Cos[120 Degree], Sin[120 Degree], 0}, unitVectB = {1, 0, 0} }, Table[unitCell3D @@ (unitVectA j + unitVectB k), {j, 20}, {k, 20}]] , PlotRange -> {{0, 10}, {0, 10}, {-1, 1}} ] 

Treillis hexagonal 3D

Commentaires

  • ok merci …: D
  • Excellente réponse, jai aimé à la fois en 2D et en 3D!

Réponse

En 2D,

Manipulate[( basis = {{s, 0}, {s/2, s Sqrt[3]/2}}; points = Tuples[Range[0, max], 2].basis; Graphics[Point[points], Frame -> True, AspectRatio -> Automatic]) , {s, 0.1, 1} , {max, 2, 10} ] 

Réponse

Une autre méthode consiste à utiliser GeometricTransformation, qui peut être rendu plus rapidement, mais est limité par $IterationLimit.

With[{base = Line[{ {{-(1/2), -(1/(2 Sqrt[3]))}, {0, 0}}, {{0, 0}, {0, 1/Sqrt[3]}}, {{0, 0}, {1/2, -(1/(2 Sqrt[3]))}} }] }, Graphics[{ GeometricTransformation[ base, Flatten@Array[ TranslationTransform[ {1/2, -(1/(2 Sqrt[3]))} + {#1 + If[OddQ[#2], 1/2, 0], #2 Sqrt[3]/2} ] &, {16, 16} ] ] }] ] 

Sortie du réseau hexagonal

Cela ne fonctionne pas sans augmenter $IterationLimit lorsque vous remplacez {16, 16} par {128, 128}.

Réponse

Il existe peu de fonctions de ressources qui peuvent aider à créer des grilles hexagonales . Le code ci-dessous est extrait des exemples de HextileBins .

HextileBins

hexes2 = Keys[ ResourceFunction["HextileBins"][ Flatten[Table[{x, y}, {x, 0, 16}, {y, 0, 12}], 1], 2]]; Graphics[{EdgeForm[Blue], FaceForm[Opacity[0.1]], hexes2}] 

saisissez la description de limage ici

lsBCoords = Union[Flatten[First /@ hexes2, 1]]; 
Graphics[{EdgeForm[Blue], hexes2 /. Polygon[p_] :> Line[Append[p, First[p]]], Red, PointSize[0.02], Point[lsBCoords]}] 

entrez la description de limage ici

HexagonalGridGraph

(Notez que cette fonction est soumise par Wolfram Research.)

grHex = ResourceFunction["HexagonalGridGraph"][{16, 12}] 

entrez la description de limage ici

lsVCoords = GraphEmbedding[grHex]; lsVCoords[[1 ;; 12]] 
(* {{0, 0}, {0, 2}, {Sqrt[3], -1}, {Sqrt[3], 3}, {2 Sqrt[3], 0}, {Sqrt[ 3], 5}, {2 Sqrt[3], 2}, {2 Sqrt[3], 6}, {3 Sqrt[3], -1}, {3 Sqrt[3], 3}, {2 Sqrt[3], 8}, {3 Sqrt[3], 5}} *) 
grHexPolygons = Map[Polygon@(List @@@ #)[[All, 1]] &, FindCycle[grHex, {6, 6}, All]] /. v_Integer :> lsVCoords[[v]]; Graphics[{EdgeForm[Blue], FaceForm[Opacity[0.2]], grHexPolygons}] 

entrez la description de limage ici

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *