У меня есть файл с координатами {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]
Как я могу нарисовать линии сетки по вертикали, горизонтали и диагонали, чтобы быть как здесь? пример
После комментария Билла
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]]
Прочтите reference.wolfram.com/language/ref/Outer.html и посмотрите примеры приложений. Затем попробуйте
Graphics3D[Outer[Line[{##}]&,data,data,1]]
Это должно создатьLine
между каждой парой точек данных и вернуть их вам в виде списка.