(*ベクトルaとbを定義します。*)
w = 7; o = {0, 0};
a = {1, 0}; b = {1/2, Sqrt[3]/2};
c = {3/4, Sqrt[3]/4}; d = {0, Sqrt[3]/2};
e = {3/2, Sqrt[3]/2}; f = {0, Sqrt[3]};
gl0 = Table[
Graphics[{Gray, Dotted, Line[{k*d - w*a, k*d + w*a}]}], {k, -w, w}];
gl1 = Table[
Graphics[{Gray, Dotted, Line[{w*b + k*a, -w*b + k*a}]}], {k, -w, w}];
gl2 = Table[
Graphics[{Gray, Dotted, Line[{-w*b + (w + k)*a, w*b + (k - w)*a }]}], {k, -w, w}];
gr0 = Table[
Graphics[{Gray, Dotted, Line[{{k*3/4, -w}, {k*3/4, w}}]}], {k, -w, w}];
gr1 = Table[
Graphics[{Gray, Dotted, Line[{w*(d - c) + k*d, -w*(d - c) + k*d}]}], {k, -w, w}];
gr2 = Table[
Graphics[{Gray, Dotted, Line[{w*c + k*d, -w*c + k*d}]}], {k, -w, w}];
(*drawPoint関数を定義します。この関数は、整数m,nと色を引数に取り、
ベクトルv=m*a+n*bを計算して描画します。*)
drawPoint[x_, y_, c_, m_, n_] :=
Graphics[{PointSize[0.01], c, Point[m*x + n*y]}]
(*乱数を使ってm,nの組を生成し、点を描画する例です。*)
drawRandomPoints[x_, y_, cl_, de_, np_] :=
Module[{m, n, points},(*乱数でmとnの値を生成します。*)
m = RandomInteger[{-de, de}, np];
n = RandomInteger[{-de, de}, np];
(*点を描画します。*)
points = Table[drawPoint[x, y, cl, m[[i]], n[[i]]], {i, np}];
(*プロットを表示します。*)
Show[points, Axes -> True, PlotRange -> {{-de, de}, {-de, de}},
AspectRatio -> 1]]
(*例として、ランダムな点を描画します。*)
g1 = drawRandomPoints[a, b, Red, 7, 1000];
g2 = drawRandomPoints[c, d, Blue, 7, 1000];
g3 = drawRandomPoints[e, f, Green, 4, 400];
gp = Graphics[{LightRed, EdgeForm[Gray],
Polygon[{o, d, d + a/2, d + (a + b)/2, c + (a + b)/2,
c + (a + b)/2 - d, c + a + b/2 - d, c + 3 a/2 a - d, 3 a/2 - d,
3 a/2 - c, 3 a/2 - c - b/2, a/2 - c - b/2, -a/2 - b/2, o}]}];
Show[gp, gl0, gl1, gl2, gr0, gr1, gr2, g1, g2, g3, PlotRange -> {{-6, 6}, {-6, 6}}]