慢慢开始更新吧,今天收到一个问题:画一个平面石墨烯的分子结构。


画法还是很自然的,先画一个正六边形,然后把点换成小球,把边换成管子,在Mathematica里可以用BallTube函数,然后用Translate函数把这个图形单元做平移变换。
代码如下,unitHexagon是六边形单元,可以指定边和点的颜色

1
2
3
4
5
6
7
8
9
10
unitHexagon[colorhexa_, coloratom_] := {colorhexa, 
Tube[Table[{Cos[n Pi/3], Sin[n Pi/3], 0}, {n, 7}], 0.1], coloratom,
Ball[#, 0.3] & /@ Table[{Cos[n Pi/3], Sin[n Pi/3], 0}, {n, 6}]};
pts[x_, y_] :=
Block[{j, k},
Flatten[Table[{{3 (j + 1/2), Sqrt[3] (k + 1/2), 0}, {3 j,
Sqrt[3] k, 0}}, {j, 0, x}, {k, 0, y}], 2]];
Graphics3D[unitHexagon[Gray, Gray], Boxed -> False]
Graphics3D[Translate[unitHexagon[Green, Red], pts[4, 3]],
ImageSize -> 600, Boxed -> False]

运行代码后得到,原谅我辣眼的配色
石墨烯