zone_axes.py

概要

立方晶系の結晶面とゾーン軸を3Dで可視化するスクリプト。

詳細説明

このスクリプトは、matplotlib を使用して3Dプロットを作成し、指定されたミラー指数(hkl)を持つ結晶面と、それらの法線ベクトル、および特定のゾーン軸を描画します。主に [001] ゾーン軸に属する結晶面を表示し、結晶学における面と軸の関係を視覚的に理解するのに役立ちます。生成されたプロットはPNG画像として保存されます。

関連リンク

:doc:zone_axes_usage

非標準ライブラリ

このスクリプトは以下の非標準ライブラリを使用します。

  • matplotlib: グラフ描画ライブラリ。特に3Dプロット機能を使用します。

  • numpy: 数値計算ライブラリ。配列操作やベクトル計算に使用します。

  • mpl_toolkits.mplot3d: matplotlib の3Dプロット拡張。

利用例

このスクリプトはPythonインタープリタで直接実行できます。

python zone_axes.py

上記のコマンドを実行すると、結晶面とゾーン軸の3Dプロットが生成され、画面に表示されるとともにPNG画像ファイルとして保存されます。

入力

コードからは明示的なファイル入力やコマンドライン引数の入力は確認できません。

出力

スクリプトが正常に実行されると、以下の出力が生成されます。

  • 画像ファイル: cubic_planes_001_zone.png

    • 立方晶系の結晶面と [001] ゾーン軸が描画された3DプロットのPNG画像。

  • 画面表示:

    • 生成された3Dプロットが、実行環境のデスクトップ環境で表示されます。

関数

plot_plane()

概要

ミラー指数(hkl)で定義される結晶面を3D空間にプロットします。

詳細説明

この関数は、立方晶系においてミラー指数(hkl)で定義される結晶面を、平面方程式 hx + ky + lz = d (ここでは d=1 を仮定) に基づいて3Dプロットします。プロット範囲は x, y, z 軸それぞれ [-1.5, 1.5] に制限され、この範囲外に出る部分は表示されません。ミラー指数に特定のゼロ値がある場合の特殊なケース(例: l=0, k=0, h=0)も処理します。軸オブジェクトに直接描画を行い、明示的な戻り値はありません。

引数

  • ax (mpl_toolkits.mplot3d.axes3d.Axes3D): matplotlib の3D軸オブジェクト。平面が描画される Axes3D インスタンス。

  • h (int): 平面のミラー指数 h

  • k (int): 平面のミラー指数 k

  • l (int): 平面のミラー指数 l

  • color (str): 平面の色を示す文字列。例: 'red', 'blue'

  • alpha (float): 平面の透明度 (0.0から1.0)。

  • label (str): 平面を示す凡例ラベル文字列。例: r'$(110)$'

戻り値

None

main()

概要

立方晶系の結晶面と [001] ゾーン軸を3Dで可視化し、画像を保存します。

詳細説明

matplotlib を使用して3Dプロットを設定し、以下の要素を描画します。

  • 3次元の軸とプロット範囲の設定。

  • [001] ゾーン軸とそれに属する複数の結晶面(例: (110), (120), (010) など)。

  • 各結晶面の法線ベクトル。

  • 凡例とタイトル。

最終的に生成されたプロットは 'cubic_planes_001_zone.png' というファイル名で保存され、画面にも表示されます。

引数

コードからは引数は確認できません。

戻り値

None

スクリプト実行

このスクリプトはPythonスクリプトとして直接実行されることを想定しています。 スクリプトが実行されると、main() 関数が呼び出され、上記の処理が実行されます。

if __name__ == "__main__":
    main()