如何绘制面心立方晶格的网格?
How can I draw a grid of an fcc lattice?
我有一个包含面心立方晶格坐标 {x, y,z} 的文件。
In[0]: data = Import[
"D:\AtomsDiffusion\AtomsDiffusion\bin\PositionsAtomsMathematica.\
txt", "CSV"]
Out[0]: {{0, 0, 0}, {0, 0.707, 0.707}, {0.707, 0, 0.707}, {0.707, 0.707,
0}, {0, 0, 1.414}, {0, 0.707, 2.121}, {0.707, 0, 2.121}, {0.707,
0.707, 1.414}, {0, 1.414, 0}, {0, 2.121, 0.707}, {0.707, 1.414,
0.707}, {0.707, 2.121, 0}, {0, 1.414, 1.414}, {0, 2.121,
2.121}, {0.707, 1.414, 2.121}, {0.707, 2.121, 1.414}, {1.414, 0,
0}, {1.414, 0.707, 0.707}, {2.121, 0, 0.707}, {2.121, 0.707,
0}, {1.414, 0, 1.414}, {1.414, 0.707, 2.121}, {2.121, 0,
2.121}, {2.121, 0.707, 1.414}, {1.414, 1.414, 0}, {1.414, 2.121,
0.707}, {2.121, 1.414, 0.707}, {2.121, 2.121, 0}, {1.414, 1.414,
1.414}, {1.414, 2.121, 2.121}, {2.121, 1.414, 2.121}, {2.121, 2.121,
1.414}};
使用 Graphics3D 函数绘制坐标:
In[1]: Graphics3D[{Opacity[.6], Ball[#, 0.5] & /@ data}, Axes -> True]
Out:
如何绘制垂直、水平和对角线的网格线,就像这里一样?
example
跟进比尔的评论
lines = Catenate@Outer[List[##] &, data, data, 1];
dist = EuclideanDistance @@@ lines;
l2 = First /@ DeleteCases[MapThread[{#1, (#2 > 0 && #2 < 1.5)} &,
{lines, dist}], {_, False}];
Show[Graphics3D[Line /@ l2, Boxed -> False],
Graphics3D[{Ball[#, 0.2] & /@ data}, Axes -> True]]
我有一个包含面心立方晶格坐标 {x, y,z} 的文件。
In[0]: data = Import[
"D:\AtomsDiffusion\AtomsDiffusion\bin\PositionsAtomsMathematica.\
txt", "CSV"]
Out[0]: {{0, 0, 0}, {0, 0.707, 0.707}, {0.707, 0, 0.707}, {0.707, 0.707,
0}, {0, 0, 1.414}, {0, 0.707, 2.121}, {0.707, 0, 2.121}, {0.707,
0.707, 1.414}, {0, 1.414, 0}, {0, 2.121, 0.707}, {0.707, 1.414,
0.707}, {0.707, 2.121, 0}, {0, 1.414, 1.414}, {0, 2.121,
2.121}, {0.707, 1.414, 2.121}, {0.707, 2.121, 1.414}, {1.414, 0,
0}, {1.414, 0.707, 0.707}, {2.121, 0, 0.707}, {2.121, 0.707,
0}, {1.414, 0, 1.414}, {1.414, 0.707, 2.121}, {2.121, 0,
2.121}, {2.121, 0.707, 1.414}, {1.414, 1.414, 0}, {1.414, 2.121,
0.707}, {2.121, 1.414, 0.707}, {2.121, 2.121, 0}, {1.414, 1.414,
1.414}, {1.414, 2.121, 2.121}, {2.121, 1.414, 2.121}, {2.121, 2.121,
1.414}};
使用 Graphics3D 函数绘制坐标:
In[1]: Graphics3D[{Opacity[.6], Ball[#, 0.5] & /@ data}, Axes -> True]
Out:
如何绘制垂直、水平和对角线的网格线,就像这里一样? example
跟进比尔的评论
lines = Catenate@Outer[List[##] &, data, data, 1];
dist = EuclideanDistance @@@ lines;
l2 = First /@ DeleteCases[MapThread[{#1, (#2 > 0 && #2 < 1.5)} &,
{lines, dist}], {_, False}];
Show[Graphics3D[Line /@ l2, Boxed -> False],
Graphics3D[{Ball[#, 0.2] & /@ data}, Axes -> True]]