draw_unit_cells プログラム仕様

単位格子および超格子を描画するためのスクリプト。

概要:

結晶学における単位格子(unit cell)や、その繰り返しからなる超格子(supercell)を3Dで可視化します。

詳細説明:

格子定数と角度を入力として、3D空間における単位格子を構築し、指定された数だけ繰り返して描画します。 基本ベクトルを計算し、平行六面体を積み重ねることで超格子の形状を表現します。

関連リンク: draw_unit_cells.py 技術ドキュメント

jsap_crystal.draw_unit_cells.draw_cell(ax, va, vb, vc, origin, linewidth=0.5)[ソース]

指定された基本格子ベクトルと原点に基づいて単一の単位格子を描画します。

パラメータ:
  • ax -- matplotlib.axes.Axes: 3DプロットのAxesオブジェクト。

  • va -- np.ndarray: 第1基本格子ベクトル。

  • vb -- np.ndarray: 第2基本格子ベクトル。

  • vc -- np.ndarray: 第3基本格子ベクトル。

  • origin -- np.ndarray: 描画開始点。

  • linewidth -- float: 線の太さ。

戻り値:

None

jsap_crystal.draw_unit_cells.draw_supercell_plot(a, b, c, alpha, beta, gamma, nx=3, ny=3, nz=3, elev=5.9, azim=-67.55, draw_lattice_vectors=False, font_size=24)[ソース]

指定された格子定数と角度に基づき、超格子を描画し、画像として保存して表示します。

jsap_crystal.draw_unit_cells.lattice_vectors(a, b, c, alpha, beta, gamma)[ソース]

結晶の格子定数と角度から基本格子ベクトルを計算します。

直交座標系における3つの基本格子ベクトル va, vb, vc を導出します。 va はX軸に沿い、vb はXY平面にあり、vc は3次元空間に配置されるように定義されます。

パラメータ:
  • a -- float: 格子定数aの長さ。

  • b -- float: 格子定数bの長さ。

  • c -- float: 格子定数cの長さ。

  • alpha -- float: 角度α(度)。vbvc のなす角。

  • beta -- float: 角度β(度)。vavc のなす角。

  • gamma -- float: 角度γ(度)。vavb のなす角。

戻り値:

tuple[np.ndarray, np.ndarray, np.ndarray]: 3つの基本格子ベクトル va, vb, vc

jsap_crystal.draw_unit_cells.main()[ソース]

メインの実行フロー。特定のパラメータで超格子を描画します。

jsap_crystal.draw_unit_cells.set_equal_aspect(ax, points)[ソース]

Matplotlib 3Dプロットのアスペクト比を全ての軸で等しく設定します。

パラメータ:
  • ax -- matplotlib.axes.Axes: 3DプロットのAxesオブジェクト。

  • points -- np.ndarray: 表示範囲を決定するための点群。

戻り値:

None