diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).png new file mode 100644 index 00000000..02fdc83d Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).tiff b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).tiff deleted file mode 100644 index 41a2d591..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.png new file mode 100644 index 00000000..7276f67e Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.tiff deleted file mode 100644 index 53daa646..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH.png new file mode 100644 index 00000000..a90ae08c Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_FULL.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_FULL.png new file mode 100644 index 00000000..6c895a9d Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED.png new file mode 100644 index 00000000..b6b50a2f Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..bc443752 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM.png new file mode 100644 index 00000000..74f77d6e Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_FULL.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_FULL.png new file mode 100644 index 00000000..fa779674 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED.png new file mode 100644 index 00000000..471152d2 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..8aa4c9c0 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/[001]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/[001]_pole_figure.tiff deleted file mode 100644 index 962cbb5b..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/[011]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/[011]_pole_figure.tiff deleted file mode 100644 index 11ed794d..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/[011]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/[111]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/[111]_pole_figure.tiff deleted file mode 100644 index 49e8d554..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/[111]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..7a56e787 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 5690ea12..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.png new file mode 100644 index 00000000..d542daf7 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.tiff deleted file mode 100644 index 42f6d3ce..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_1_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.png new file mode 100644 index 00000000..d7667b31 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.tiff deleted file mode 100644 index 64604775..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_0_1_2_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.png new file mode 100644 index 00000000..97a11567 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.tiff deleted file mode 100644 index 840994d1..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_1_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.png new file mode 100644 index 00000000..3dbcd696 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.tiff deleted file mode 100644 index a255ad72..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_0_2_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.png new file mode 100644 index 00000000..78e547b4 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.tiff deleted file mode 100644 index e73c7ef4..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_1_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.png b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.png new file mode 100644 index 00000000..2b380312 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.tiff b/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.tiff deleted file mode 100644 index 02a8f3de..00000000 Binary files a/Data/IPF_Legend/Cubic m-3 (Th)/ipf_test_image_1_1_2_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/{001}_pole_figure.png b/Data/IPF_Legend/Cubic m-3 (Th)/{001}_pole_figure.png new file mode 100644 index 00000000..d75bfdf7 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/{011}_pole_figure.png b/Data/IPF_Legend/Cubic m-3 (Th)/{011}_pole_figure.png new file mode 100644 index 00000000..ad52561f Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/{011}_pole_figure.png differ diff --git a/Data/IPF_Legend/Cubic m-3 (Th)/{111}_pole_figure.png b/Data/IPF_Legend/Cubic m-3 (Th)/{111}_pole_figure.png new file mode 100644 index 00000000..8f589383 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3 (Th)/{111}_pole_figure.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).png new file mode 100644 index 00000000..842c29a5 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).tiff deleted file mode 100644 index 6c65915e..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.png new file mode 100644 index 00000000..dba6f1c6 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.tiff deleted file mode 100644 index 06da3cb8..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH.png new file mode 100644 index 00000000..1d7c2f92 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_FULL.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_FULL.png new file mode 100644 index 00000000..63a7fb22 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED.png new file mode 100644 index 00000000..0b5d5b0a Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..14075319 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM.png new file mode 100644 index 00000000..b7de57f9 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_FULL.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_FULL.png new file mode 100644 index 00000000..4d5b5b37 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED.png new file mode 100644 index 00000000..986885aa Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..7f3ab1bf Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/[001]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/[001]_pole_figure.tiff deleted file mode 100644 index 962cbb5b..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/[011]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/[011]_pole_figure.tiff deleted file mode 100644 index 8a375476..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/[011]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/[111]_pole_figure.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/[111]_pole_figure.tiff deleted file mode 100644 index 49e8d554..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/[111]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..5b78d9bb Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 8c0b051f..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.png new file mode 100644 index 00000000..f120e01e Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.tiff deleted file mode 100644 index 621e7800..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_1_1_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.png new file mode 100644 index 00000000..4de398e8 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.tiff deleted file mode 100644 index e37e13a3..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_0_2_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.png new file mode 100644 index 00000000..c1b76569 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.tiff deleted file mode 100644 index c48061ae..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_1_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.png new file mode 100644 index 00000000..a0ee6de6 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.tiff deleted file mode 100644 index bb0d91ee..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_1_2_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.png b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.png new file mode 100644 index 00000000..8cdd6357 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.tiff b/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.tiff deleted file mode 100644 index 09c408d3..00000000 Binary files a/Data/IPF_Legend/Cubic m-3m (Oh)/ipf_test_image_1_2_2_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/{001}_pole_figure.png b/Data/IPF_Legend/Cubic m-3m (Oh)/{001}_pole_figure.png new file mode 100644 index 00000000..d75bfdf7 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/{011}_pole_figure.png b/Data/IPF_Legend/Cubic m-3m (Oh)/{011}_pole_figure.png new file mode 100644 index 00000000..ad52561f Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/{011}_pole_figure.png differ diff --git a/Data/IPF_Legend/Cubic m-3m (Oh)/{111}_pole_figure.png b/Data/IPF_Legend/Cubic m-3m (Oh)/{111}_pole_figure.png new file mode 100644 index 00000000..8f589383 Binary files /dev/null and b/Data/IPF_Legend/Cubic m-3m (Oh)/{111}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).png new file mode 100644 index 00000000..4b597d4e Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).tiff deleted file mode 100644 index 2547bdb8..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.png new file mode 100644 index 00000000..050b299a Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.tiff deleted file mode 100644 index 89485662..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH.png new file mode 100644 index 00000000..168abad4 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_FULL.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_FULL.png new file mode 100644 index 00000000..74297cc9 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED.png new file mode 100644 index 00000000..345a769c Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..80f88868 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM.png new file mode 100644 index 00000000..077f1902 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_FULL.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_FULL.png new file mode 100644 index 00000000..c4977cf3 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..9481d548 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..2ba45992 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[0001]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/[0001]_pole_figure.tiff deleted file mode 100644 index b76072d5..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[0001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[11-20]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/[11-20]_pole_figure.tiff deleted file mode 100644 index fe04d08f..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[11-20]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[2-1-10]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/[2-1-10]_pole_figure.tiff deleted file mode 100644 index 9157e702..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/[2-1-10]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..abfcc435 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 13424c96..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..00d86be1 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index b99895bc..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.png new file mode 100644 index 00000000..72908614 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.tiff deleted file mode 100644 index d1b4a3bf..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_0_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.png new file mode 100644 index 00000000..7f425bd2 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.tiff deleted file mode 100644 index e4a2f1ed..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_1_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.png new file mode 100644 index 00000000..01ad85f0 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.tiff deleted file mode 100644 index dbd18a54..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.png new file mode 100644 index 00000000..9b2ef327 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.tiff b/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.tiff deleted file mode 100644 index 313a6122..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_m (C6h)/ipf_test_image_2_1_2_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/{0001}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{0001}_pole_figure.png new file mode 100644 index 00000000..e66b9b57 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{0001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/{10-10}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{10-10}_pole_figure.png new file mode 100644 index 00000000..e5eaa986 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{10-10}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_m (C6h)/{11-20}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{11-20}_pole_figure.png new file mode 100644 index 00000000..228ffb38 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_m (C6h)/{11-20}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).png new file mode 100644 index 00000000..6fa33bb1 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).tiff deleted file mode 100644 index faa878da..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.png new file mode 100644 index 00000000..cd996453 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.tiff deleted file mode 100644 index 607fbd91..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH.png new file mode 100644 index 00000000..7b63549b Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_FULL.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_FULL.png new file mode 100644 index 00000000..2b1600dc Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED.png new file mode 100644 index 00000000..9564e101 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..c4bd2e34 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM.png new file mode 100644 index 00000000..66531b43 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_FULL.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_FULL.png new file mode 100644 index 00000000..900077ec Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..ebc8b524 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..3ff7b0a0 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[0001]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[0001]_pole_figure.tiff deleted file mode 100644 index b76072d5..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[0001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[10-10]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[10-10]_pole_figure.tiff deleted file mode 100644 index 29f6d03d..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[10-10]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[2-1-10]_pole_figure.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[2-1-10]_pole_figure.tiff deleted file mode 100644 index 6b0d7a2e..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/[2-1-10]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..4b0a1100 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 2d02e413..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..2e6ac59e Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index 33f89ceb..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.png new file mode 100644 index 00000000..07a6d0e2 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.tiff deleted file mode 100644 index 915d2680..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_1_0_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.png new file mode 100644 index 00000000..67f32132 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.tiff deleted file mode 100644 index 4fab8abb..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.png new file mode 100644 index 00000000..fb35e84a Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.tiff deleted file mode 100644 index 2c955dbc..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_2_1_2_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.png new file mode 100644 index 00000000..3ebdd113 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.tiff b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.tiff deleted file mode 100644 index 73df11e5..00000000 Binary files a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/ipf_test_image_4_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{0001}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{0001}_pole_figure.png new file mode 100644 index 00000000..e66b9b57 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{0001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{10-10}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{10-10}_pole_figure.png new file mode 100644 index 00000000..e5eaa986 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{10-10}_pole_figure.png differ diff --git a/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{11-20}_pole_figure.png b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{11-20}_pole_figure.png new file mode 100644 index 00000000..228ffb38 Binary files /dev/null and b/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/{11-20}_pole_figure.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).png new file mode 100644 index 00000000..66be46f9 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).tiff deleted file mode 100644 index 3758f4f9..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.png new file mode 100644 index 00000000..0a8a7ffd Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.tiff deleted file mode 100644 index ad34391d..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH.png new file mode 100644 index 00000000..7647cec8 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_FULL.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_FULL.png new file mode 100644 index 00000000..c8ba6cd9 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED.png new file mode 100644 index 00000000..917aa315 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..75571f83 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM.png new file mode 100644 index 00000000..e243cfea Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_FULL.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_FULL.png new file mode 100644 index 00000000..df67d0ca Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..c4251663 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..11c0f179 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[001]_pole_figure.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/[001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[010]_pole_figure.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/[010]_pole_figure.tiff deleted file mode 100644 index df20b702..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[010]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[100]_pole_figure.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/[100]_pole_figure.tiff deleted file mode 100644 index 0318dfe6..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/[100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.png new file mode 100644 index 00000000..e066ac73 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.tiff deleted file mode 100644 index bac24e7f..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_-1_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.png new file mode 100644 index 00000000..47924c0f Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.tiff deleted file mode 100644 index f5c47089..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_-1_0_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.png new file mode 100644 index 00000000..f4ca1741 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.tiff deleted file mode 100644 index 14ac9f9a..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_-1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..0900bd5d Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index b0376cf3..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.png new file mode 100644 index 00000000..f4ca1741 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.tiff deleted file mode 100644 index 14ac9f9a..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_0_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..47924c0f Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index f5c47089..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.png new file mode 100644 index 00000000..2add5514 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.tiff b/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.tiff deleted file mode 100644 index 0dabd1c6..00000000 Binary files a/Data/IPF_Legend/Monoclinic 2_m (C2h)/ipf_test_image_1_1_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/{001}_pole_figure.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/{010}_pole_figure.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{010}_pole_figure.png new file mode 100644 index 00000000..5b7c9a67 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{010}_pole_figure.png differ diff --git a/Data/IPF_Legend/Monoclinic 2_m (C2h)/{100}_pole_figure.png b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{100}_pole_figure.png new file mode 100644 index 00000000..c05cecd0 Binary files /dev/null and b/Data/IPF_Legend/Monoclinic 2_m (C2h)/{100}_pole_figure.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).png new file mode 100644 index 00000000..e4f123e9 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).tiff deleted file mode 100644 index 08ca042e..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.png new file mode 100644 index 00000000..03df835b Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.tiff deleted file mode 100644 index 42ffc852..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH.png new file mode 100644 index 00000000..26f5c972 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_FULL.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_FULL.png new file mode 100644 index 00000000..0a3e9a56 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED.png new file mode 100644 index 00000000..160e4322 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..51dbef94 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM.png new file mode 100644 index 00000000..eb0f9ad2 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_FULL.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_FULL.png new file mode 100644 index 00000000..406f477d Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..efe0cba4 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..e9e43660 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[001]_pole_figure.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/[001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[010]_pole_figure.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/[010]_pole_figure.tiff deleted file mode 100644 index df20b702..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[010]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[100]_pole_figure.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/[100]_pole_figure.tiff deleted file mode 100644 index 0318dfe6..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/[100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..752dfc0d Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 6c7f80b0..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.png new file mode 100644 index 00000000..bacc1282 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.tiff deleted file mode 100644 index 3de8bd57..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.png new file mode 100644 index 00000000..9e95d315 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.tiff deleted file mode 100644 index 16a5d7bd..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_0_1_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..c3784464 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index d7a2780a..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.png new file mode 100644 index 00000000..8519872d Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.tiff deleted file mode 100644 index 8755adda..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_0_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.png new file mode 100644 index 00000000..b369a29b Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.tiff deleted file mode 100644 index c8df0475..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.png new file mode 100644 index 00000000..1fd0dcbe Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.tiff b/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.tiff deleted file mode 100644 index 8998ea85..00000000 Binary files a/Data/IPF_Legend/Orthorhombic mmm (D2h)/ipf_test_image_1_1_1_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/{001}_pole_figure.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/{010}_pole_figure.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{010}_pole_figure.png new file mode 100644 index 00000000..5b7c9a67 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{010}_pole_figure.png differ diff --git a/Data/IPF_Legend/Orthorhombic mmm (D2h)/{100}_pole_figure.png b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{100}_pole_figure.png new file mode 100644 index 00000000..c05cecd0 Binary files /dev/null and b/Data/IPF_Legend/Orthorhombic mmm (D2h)/{100}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).png new file mode 100644 index 00000000..846d8a9b Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).tiff deleted file mode 100644 index 8c189654..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.png new file mode 100644 index 00000000..e46d5e33 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.tiff deleted file mode 100644 index 0c5efb6f..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH.png new file mode 100644 index 00000000..c1d391a5 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_FULL.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_FULL.png new file mode 100644 index 00000000..74d236fd Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED.png new file mode 100644 index 00000000..14d6a86f Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..32031748 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM.png new file mode 100644 index 00000000..83b7d186 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_FULL.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_FULL.png new file mode 100644 index 00000000..243a240e Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..d69e3558 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..f2fb437e Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[001]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/[001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[010]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/[010]_pole_figure.tiff deleted file mode 100644 index df20b702..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[010]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[100]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/[100]_pole_figure.tiff deleted file mode 100644 index 0318dfe6..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/[100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..956051ed Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 8afcafb6..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.png new file mode 100644 index 00000000..647a0e8e Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.tiff deleted file mode 100644 index 086ba7d6..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.png new file mode 100644 index 00000000..5eded54e Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.tiff deleted file mode 100644 index 51ef6d8a..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_0_1_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..555bc24d Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index f3630d17..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.png new file mode 100644 index 00000000..11a99523 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.tiff deleted file mode 100644 index b846f2b4..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_0_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.png new file mode 100644 index 00000000..b369a29b Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.tiff deleted file mode 100644 index c8df0475..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.png new file mode 100644 index 00000000..1fd0dcbe Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.tiff b/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.tiff deleted file mode 100644 index 8998ea85..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_m (C4h)/ipf_test_image_1_1_1_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/{001}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/{100}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{100}_pole_figure.png new file mode 100644 index 00000000..79b12de8 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{100}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_m (C4h)/{110}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{110}_pole_figure.png new file mode 100644 index 00000000..a93162e9 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_m (C4h)/{110}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).png new file mode 100644 index 00000000..2fbb1292 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).tiff deleted file mode 100644 index 5277083f..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.png new file mode 100644 index 00000000..ee9eadad Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.tiff deleted file mode 100644 index 1a80e921..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH.png new file mode 100644 index 00000000..e864107c Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_FULL.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_FULL.png new file mode 100644 index 00000000..5e3ced13 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED.png new file mode 100644 index 00000000..ee02bcf0 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..720777e6 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM.png new file mode 100644 index 00000000..e54ca4f0 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_FULL.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_FULL.png new file mode 100644 index 00000000..41079252 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED.png new file mode 100644 index 00000000..a40978e3 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..12d756e1 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/Tetragonal 4_mmm (D4h)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[001]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[100]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[100]_pole_figure.tiff deleted file mode 100644 index f0c218ec..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[110]_pole_figure.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[110]_pole_figure.tiff deleted file mode 100644 index 45a560da..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/[110]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..14037e33 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 4a2124a6..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..271f7d29 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index 73e92373..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.png new file mode 100644 index 00000000..2e59ecda Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.tiff deleted file mode 100644 index da96bf53..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_0_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.png new file mode 100644 index 00000000..5d0f0e7e Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.tiff deleted file mode 100644 index 158096b7..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.png new file mode 100644 index 00000000..812a6ed2 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.tiff deleted file mode 100644 index a5d73e73..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_1_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.png new file mode 100644 index 00000000..70819f9c Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.tiff deleted file mode 100644 index 08a7538a..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_1_2_3_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.png new file mode 100644 index 00000000..35b14318 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.tiff b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.tiff deleted file mode 100644 index 9734c93d..00000000 Binary files a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/ipf_test_image_2_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{001}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{100}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{100}_pole_figure.png new file mode 100644 index 00000000..79b12de8 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{100}_pole_figure.png differ diff --git a/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{110}_pole_figure.png b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{110}_pole_figure.png new file mode 100644 index 00000000..a93162e9 Binary files /dev/null and b/Data/IPF_Legend/Tetragonal 4_mmm (D4h)/{110}_pole_figure.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).png new file mode 100644 index 00000000..f30386ec Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).tiff deleted file mode 100644 index 081d95b3..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.png new file mode 100644 index 00000000..6c412dd7 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.tiff deleted file mode 100644 index ab3d7299..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH.png new file mode 100644 index 00000000..af49d1e5 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_FULL.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_FULL.png new file mode 100644 index 00000000..e3a896fe Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED.png new file mode 100644 index 00000000..8b11b272 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..73c10821 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM.png new file mode 100644 index 00000000..fc99f649 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_FULL.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_FULL.png new file mode 100644 index 00000000..c5e8582e Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED.png new file mode 100644 index 00000000..d6b77545 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..256964a9 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/[001]_pole_figure.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/[001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/[001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/[010]_pole_figure.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/[010]_pole_figure.tiff deleted file mode 100644 index df20b702..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/[010]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/[100]_pole_figure.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/[100]_pole_figure.tiff deleted file mode 100644 index 0318dfe6..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/[100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.png new file mode 100644 index 00000000..e066ac73 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.tiff deleted file mode 100644 index bac24e7f..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_-1_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.png new file mode 100644 index 00000000..47924c0f Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.tiff deleted file mode 100644 index f5c47089..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_-1_0_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..0900bd5d Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index b0376cf3..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.png new file mode 100644 index 00000000..f4ca1741 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.tiff deleted file mode 100644 index 14ac9f9a..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.png new file mode 100644 index 00000000..666ac86e Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.tiff deleted file mode 100644 index 40a1cc13..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_0_1_1_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.png new file mode 100644 index 00000000..47924c0f Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.tiff deleted file mode 100644 index f5c47089..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_0_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.png b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.png new file mode 100644 index 00000000..2add5514 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.tiff b/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.tiff deleted file mode 100644 index 0dabd1c6..00000000 Binary files a/Data/IPF_Legend/Triclinic -1 (Ci)/ipf_test_image_1_1_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/{001}_pole_figure.png b/Data/IPF_Legend/Triclinic -1 (Ci)/{001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/{001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/{010}_pole_figure.png b/Data/IPF_Legend/Triclinic -1 (Ci)/{010}_pole_figure.png new file mode 100644 index 00000000..5b7c9a67 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/{010}_pole_figure.png differ diff --git a/Data/IPF_Legend/Triclinic -1 (Ci)/{100}_pole_figure.png b/Data/IPF_Legend/Triclinic -1 (Ci)/{100}_pole_figure.png new file mode 100644 index 00000000..c05cecd0 Binary files /dev/null and b/Data/IPF_Legend/Triclinic -1 (Ci)/{100}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).png new file mode 100644 index 00000000..422520fb Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).tiff deleted file mode 100644 index 1a565c9f..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.png new file mode 100644 index 00000000..80da57cb Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.tiff deleted file mode 100644 index 1a7d450a..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH.png new file mode 100644 index 00000000..2ee2cf54 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_FULL.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_FULL.png new file mode 100644 index 00000000..d9be224f Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED.png new file mode 100644 index 00000000..7b790445 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..50097bda Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM.png new file mode 100644 index 00000000..ea8dd3e9 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_FULL.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_FULL.png new file mode 100644 index 00000000..856b20bc Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED.png new file mode 100644 index 00000000..70b57840 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..f55ac4d9 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/[-1-120]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/[-1-120]_pole_figure.tiff deleted file mode 100644 index c8b1fcb7..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/[-1-120]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/[0001]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/[0001]_pole_figure.tiff deleted file mode 100644 index 235ce328..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/[0001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/[2-1-10]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/[2-1-10]_pole_figure.tiff deleted file mode 100644 index 0318dfe6..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/[2-1-10]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.png new file mode 100644 index 00000000..f019b235 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.tiff deleted file mode 100644 index 37248bca..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_-1_-1_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.png new file mode 100644 index 00000000..da369627 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.tiff deleted file mode 100644 index 236face3..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_-1_1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..f65b998b Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index b8c84fdb..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.png new file mode 100644 index 00000000..1d36d4bf Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.tiff deleted file mode 100644 index 12f4a33c..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.png new file mode 100644 index 00000000..43754cea Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.tiff deleted file mode 100644 index cbaac7d9..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_-2_2_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.png new file mode 100644 index 00000000..ce447706 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.tiff deleted file mode 100644 index 2af313f9..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_1_0_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.png b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.png new file mode 100644 index 00000000..5802574e Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.tiff b/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.tiff deleted file mode 100644 index f6cbb9f2..00000000 Binary files a/Data/IPF_Legend/Trigonal -3 (C3i)/ipf_test_image_2_-1_2_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/{-1-120}_pole_figure.png b/Data/IPF_Legend/Trigonal -3 (C3i)/{-1-120}_pole_figure.png new file mode 100644 index 00000000..2314b736 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/{-1-120}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/{0001}_pole_figure.png b/Data/IPF_Legend/Trigonal -3 (C3i)/{0001}_pole_figure.png new file mode 100644 index 00000000..1781ea47 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/{0001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3 (C3i)/{2-1-10}_pole_figure.png b/Data/IPF_Legend/Trigonal -3 (C3i)/{2-1-10}_pole_figure.png new file mode 100644 index 00000000..2314b736 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3 (C3i)/{2-1-10}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).png new file mode 100644 index 00000000..c72b1b46 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).tiff deleted file mode 100644 index fe344c91..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.png new file mode 100644 index 00000000..b97ca42d Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.tiff deleted file mode 100644 index 48a5f06b..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_FULL.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH.png new file mode 100644 index 00000000..679c97d0 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_FULL.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_FULL.png new file mode 100644 index 00000000..00d5e7d6 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED.png new file mode 100644 index 00000000..dc19ebca Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED_FULL.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED_FULL.png new file mode 100644 index 00000000..a5dc9d8f Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_NH_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM.png new file mode 100644 index 00000000..de726b88 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_FULL.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_FULL.png new file mode 100644 index 00000000..09dfaed4 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED.png new file mode 100644 index 00000000..8b220ec2 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED_FULL.png b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED_FULL.png new file mode 100644 index 00000000..eeabe6f1 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d)_PUCM_GRIDDED_FULL.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/[0-110]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/[0-110]_pole_figure.tiff deleted file mode 100644 index cac49884..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/[0-110]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/[0001]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/[0001]_pole_figure.tiff deleted file mode 100644 index b76072d5..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/[0001]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/[1-100]_pole_figure.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/[1-100]_pole_figure.tiff deleted file mode 100644 index 66e7514e..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/[1-100]_pole_figure.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.png new file mode 100644 index 00000000..9ff309b5 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.tiff deleted file mode 100644 index 6650312a..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_0_Aqua.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.png new file mode 100644 index 00000000..6fb5c0d8 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.tiff deleted file mode 100644 index 24080066..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_0_1_Red.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.png new file mode 100644 index 00000000..d01ab516 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.tiff deleted file mode 100644 index cf4e2213..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_-1_Yellow.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.png new file mode 100644 index 00000000..97c2af60 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.tiff deleted file mode 100644 index 1583c23c..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_0_1_0_Green.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.png new file mode 100644 index 00000000..4eaed17f Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.tiff deleted file mode 100644 index 8c7ace80..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_-1_1_Pink.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.png new file mode 100644 index 00000000..f95cbbe7 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.tiff deleted file mode 100644 index 8f6f4e44..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_1_0_1_Flesh.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.png b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.png new file mode 100644 index 00000000..179b39db Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.tiff b/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.tiff deleted file mode 100644 index ba06f5fe..00000000 Binary files a/Data/IPF_Legend/Trigonal -3m (D3d)/ipf_test_image_2_1_0_Blue.tiff and /dev/null differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/{0-110}_pole_figure.png b/Data/IPF_Legend/Trigonal -3m (D3d)/{0-110}_pole_figure.png new file mode 100644 index 00000000..e5eaa986 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/{0-110}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/{0001}_pole_figure.png b/Data/IPF_Legend/Trigonal -3m (D3d)/{0001}_pole_figure.png new file mode 100644 index 00000000..e66b9b57 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/{0001}_pole_figure.png differ diff --git a/Data/IPF_Legend/Trigonal -3m (D3d)/{1-100}_pole_figure.png b/Data/IPF_Legend/Trigonal -3m (D3d)/{1-100}_pole_figure.png new file mode 100644 index 00000000..e5eaa986 Binary files /dev/null and b/Data/IPF_Legend/Trigonal -3m (D3d)/{1-100}_pole_figure.png differ diff --git a/Data/Pole_Figure_Validation/mtex_pole_figure_positions.csv b/Data/Pole_Figure_Validation/mtex_pole_figure_positions.csv index e4a8ef7d..7260e027 100644 --- a/Data/Pole_Figure_Validation/mtex_pole_figure_positions.csv +++ b/Data/Pole_Figure_Validation/mtex_pole_figure_positions.csv @@ -1,1753 +1,1753 @@ orient_id,orient_name,rotation_point_group,symmetry_name,plane_family,x,y -0,Cube,432,Cubic_High m-3m,<001>,0.00000000,-1.00000000 -0,Cube,432,Cubic_High m-3m,<001>,0.00000000,-1.00000000 -0,Cube,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -0,Cube,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -0,Cube,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -0,Cube,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -0,Cube,432,Cubic_High m-3m,<011>,-0.41421356,-0.00000000 -0,Cube,432,Cubic_High m-3m,<011>,-0.41421356,-0.00000000 -0,Cube,432,Cubic_High m-3m,<011>,-0.00000000,-0.41421356 -0,Cube,432,Cubic_High m-3m,<011>,-0.00000000,-0.41421356 -0,Cube,432,Cubic_High m-3m,<011>,-0.00000000,0.41421356 -0,Cube,432,Cubic_High m-3m,<011>,-0.00000000,0.41421356 -0,Cube,432,Cubic_High m-3m,<011>,0.41421356,0.00000000 -0,Cube,432,Cubic_High m-3m,<011>,0.41421356,0.00000000 -0,Cube,432,Cubic_High m-3m,<011>,0.70710678,-0.70710678 -0,Cube,432,Cubic_High m-3m,<011>,0.70710678,-0.70710678 -0,Cube,432,Cubic_High m-3m,<011>,0.70710678,0.70710678 -0,Cube,432,Cubic_High m-3m,<011>,0.70710678,0.70710678 -0,Cube,432,Cubic_High m-3m,<111>,-0.36602540,-0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,-0.36602540,-0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,-0.36602540,0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,-0.36602540,0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,0.36602540,-0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,0.36602540,-0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,0.36602540,0.36602540 -0,Cube,432,Cubic_High m-3m,<111>,0.36602540,0.36602540 -0,Cube,23,Cubic_Low m-3,<001>,0.00000000,-1.00000000 -0,Cube,23,Cubic_Low m-3,<001>,0.00000000,-1.00000000 -0,Cube,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -0,Cube,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -0,Cube,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -0,Cube,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -0,Cube,23,Cubic_Low m-3,<011>,-0.41421356,-0.00000000 -0,Cube,23,Cubic_Low m-3,<011>,-0.41421356,-0.00000000 -0,Cube,23,Cubic_Low m-3,<011>,0.00000000,-0.41421356 -0,Cube,23,Cubic_Low m-3,<011>,0.00000000,-0.41421356 -0,Cube,23,Cubic_Low m-3,<011>,-0.00000000,0.41421356 -0,Cube,23,Cubic_Low m-3,<011>,-0.00000000,0.41421356 -0,Cube,23,Cubic_Low m-3,<011>,0.41421356,0.00000000 -0,Cube,23,Cubic_Low m-3,<011>,0.41421356,0.00000000 -0,Cube,23,Cubic_Low m-3,<011>,0.70710678,-0.70710678 -0,Cube,23,Cubic_Low m-3,<011>,0.70710678,-0.70710678 -0,Cube,23,Cubic_Low m-3,<011>,0.70710678,0.70710678 -0,Cube,23,Cubic_Low m-3,<011>,0.70710678,0.70710678 -0,Cube,23,Cubic_Low m-3,<111>,-0.36602540,-0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,-0.36602540,-0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,-0.36602540,0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,-0.36602540,0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,0.36602540,-0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,0.36602540,-0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,0.36602540,0.36602540 -0,Cube,23,Cubic_Low m-3,<111>,0.36602540,0.36602540 -0,Cube,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,-1.00000000,-0.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,-0.50000000,-0.86602540 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,0.50000000,-0.86602540 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,0.50000000,-0.86602540 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,0.50000000,0.86602540 -0,Cube,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,-0.86602540,-0.50000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,-0.86602540,0.50000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,0.00000000,-1.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,0.00000000,-1.00000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,0.86602540,-0.50000000 -0,Cube,622,Hexagonal_High 6/mmm,<11-20>,0.86602540,0.50000000 -0,Cube,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -0,Cube,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,-1.00000000,-0.00000000 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,-0.50000000,-0.86602540 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,-0.50000000,0.86602540 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,0.50000000,-0.86602540 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,0.50000000,0.86602540 -0,Cube,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,-0.86602540,-0.50000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,-0.86602540,0.50000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,0.00000000,-1.00000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,1.00000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,0.86602540,-0.50000000 -0,Cube,6,Hexagonal_Low 6/m,<11-20>,0.86602540,0.50000000 -0,Cube,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -0,Cube,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -0,Cube,32,Trigonal_High -3m,<0-110>,-1.00000000,-0.00000000 -0,Cube,32,Trigonal_High -3m,<0-110>,-0.50000000,-0.86602540 -0,Cube,32,Trigonal_High -3m,<0-110>,0.50000000,-0.86602540 -0,Cube,32,Trigonal_High -3m,<0-110>,0.50000000,-0.86602540 -0,Cube,32,Trigonal_High -3m,<0-110>,0.50000000,0.86602540 -0,Cube,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -0,Cube,32,Trigonal_High -3m,<1-100>,-0.50000000,-0.86602540 -0,Cube,32,Trigonal_High -3m,<1-100>,-0.50000000,0.86602540 -0,Cube,32,Trigonal_High -3m,<1-100>,0.50000000,-0.86602540 -0,Cube,32,Trigonal_High -3m,<1-100>,0.50000000,0.86602540 -0,Cube,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -0,Cube,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -0,Cube,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -0,Cube,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,-0.86602540,-0.50000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,-0.86602540,0.50000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,0.00000000,-1.00000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,-0.00000000,1.00000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,0.86602540,-0.50000000 -0,Cube,3,Trigonal_Low -3,<-1-120>,0.86602540,0.50000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,-0.86602540,-0.50000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,-0.86602540,0.50000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,0.00000000,-1.00000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,-0.00000000,1.00000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,0.86602540,-0.50000000 -0,Cube,3,Trigonal_Low -3,<2-1-10>,0.86602540,0.50000000 -0,Cube,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<100>,-1.00000000,-0.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<100>,0.00000000,-1.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<100>,-0.00000000,1.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -0,Cube,422,Tetragonal_High 4/mmm,<110>,-0.70710678,-0.70710678 -0,Cube,422,Tetragonal_High 4/mmm,<110>,0.70710678,-0.70710678 -0,Cube,422,Tetragonal_High 4/mmm,<110>,0.70710678,-0.70710678 -0,Cube,422,Tetragonal_High 4/mmm,<110>,0.70710678,0.70710678 -0,Cube,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -0,Cube,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -0,Cube,4,Tetragonal_Low 4/m,<100>,-1.00000000,-0.00000000 -0,Cube,4,Tetragonal_Low 4/m,<100>,0.00000000,-1.00000000 -0,Cube,4,Tetragonal_Low 4/m,<100>,-0.00000000,1.00000000 -0,Cube,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -0,Cube,4,Tetragonal_Low 4/m,<110>,-0.70710678,-0.70710678 -0,Cube,4,Tetragonal_Low 4/m,<110>,-0.70710678,0.70710678 -0,Cube,4,Tetragonal_Low 4/m,<110>,0.70710678,-0.70710678 -0,Cube,4,Tetragonal_Low 4/m,<110>,0.70710678,0.70710678 -0,Cube,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -0,Cube,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -0,Cube,222,OrthoRhombic mmm,<100>,-1.00000000,-0.00000000 -0,Cube,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -0,Cube,222,OrthoRhombic mmm,<010>,0.00000000,-1.00000000 -0,Cube,222,OrthoRhombic mmm,<010>,-0.00000000,1.00000000 -0,Cube,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -0,Cube,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -0,Cube,2,Monoclinic 2/m,<100>,-1.00000000,-0.00000000 -0,Cube,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -0,Cube,2,Monoclinic 2/m,<010>,0.00000000,-1.00000000 -0,Cube,2,Monoclinic 2/m,<010>,-0.00000000,1.00000000 -0,Cube,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -0,Cube,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -0,Cube,1,Triclinic -1,<100>,-1.00000000,-0.00000000 -0,Cube,1,Triclinic -1,<100>,1.00000000,0.00000000 -0,Cube,1,Triclinic -1,<010>,0.00000000,-1.00000000 -0,Cube,1,Triclinic -1,<010>,-0.00000000,1.00000000 -1,Goss,432,Cubic_High m-3m,<001>,0.00000000,-0.41421356 -1,Goss,432,Cubic_High m-3m,<001>,0.00000000,-0.41421356 -1,Goss,432,Cubic_High m-3m,<001>,-0.00000000,0.41421356 -1,Goss,432,Cubic_High m-3m,<001>,-0.00000000,0.41421356 -1,Goss,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -1,Goss,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -1,Goss,432,Cubic_High m-3m,<011>,-0.47140452,-0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,-0.47140452,-0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,-0.47140452,0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,-0.47140452,0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,-0.00000000,-1.00000000 -1,Goss,432,Cubic_High m-3m,<011>,-0.00000000,-1.00000000 -1,Goss,432,Cubic_High m-3m,<011>,-0.00000000,-0.00000000 -1,Goss,432,Cubic_High m-3m,<011>,-0.00000000,-0.00000000 -1,Goss,432,Cubic_High m-3m,<011>,0.47140452,-0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,0.47140452,-0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,0.47140452,0.33333333 -1,Goss,432,Cubic_High m-3m,<011>,0.47140452,0.33333333 -1,Goss,432,Cubic_High m-3m,<111>,-0.31783725,0.00000000 -1,Goss,432,Cubic_High m-3m,<111>,-0.31783725,0.00000000 -1,Goss,432,Cubic_High m-3m,<111>,0.31783725,0.00000000 -1,Goss,432,Cubic_High m-3m,<111>,0.31783725,0.00000000 -1,Goss,432,Cubic_High m-3m,<111>,0.57735027,-0.81649658 -1,Goss,432,Cubic_High m-3m,<111>,0.57735027,-0.81649658 -1,Goss,432,Cubic_High m-3m,<111>,0.57735027,0.81649658 -1,Goss,432,Cubic_High m-3m,<111>,0.57735027,0.81649658 -1,Goss,23,Cubic_Low m-3,<001>,0.00000000,-0.41421356 -1,Goss,23,Cubic_Low m-3,<001>,0.00000000,-0.41421356 -1,Goss,23,Cubic_Low m-3,<001>,-0.00000000,0.41421356 -1,Goss,23,Cubic_Low m-3,<001>,-0.00000000,0.41421356 -1,Goss,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -1,Goss,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -1,Goss,23,Cubic_Low m-3,<011>,-0.47140452,-0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,-0.47140452,-0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,-0.47140452,0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,-0.47140452,0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,0.00000000,-1.00000000 -1,Goss,23,Cubic_Low m-3,<011>,0.00000000,-1.00000000 -1,Goss,23,Cubic_Low m-3,<011>,-0.00000000,-0.00000000 -1,Goss,23,Cubic_Low m-3,<011>,-0.00000000,-0.00000000 -1,Goss,23,Cubic_Low m-3,<011>,0.47140452,-0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,0.47140452,-0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,0.47140452,0.33333333 -1,Goss,23,Cubic_Low m-3,<011>,0.47140452,0.33333333 -1,Goss,23,Cubic_Low m-3,<111>,-0.57735027,-0.81649658 -1,Goss,23,Cubic_Low m-3,<111>,-0.57735027,-0.81649658 -1,Goss,23,Cubic_Low m-3,<111>,-0.31783725,-0.00000000 -1,Goss,23,Cubic_Low m-3,<111>,-0.31783725,-0.00000000 -1,Goss,23,Cubic_Low m-3,<111>,0.31783725,0.00000000 -1,Goss,23,Cubic_Low m-3,<111>,0.31783725,0.00000000 -1,Goss,23,Cubic_Low m-3,<111>,0.57735027,-0.81649658 -1,Goss,23,Cubic_Low m-3,<111>,0.57735027,-0.81649658 -1,Goss,622,Hexagonal_High 6/mmm,<0001>,0.00000000,-0.41421356 -1,Goss,622,Hexagonal_High 6/mmm,<0001>,0.00000000,-0.41421356 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,-0.31010205,0.37979590 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,-0.31010205,0.37979590 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,0.31010205,0.37979590 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,0.31010205,0.37979590 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -1,Goss,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,-0.63981621,0.26120387 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,-0.63981621,0.26120387 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.41421356 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.41421356 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,0.63981621,0.26120387 -1,Goss,622,Hexagonal_High 6/mmm,<11-20>,0.63981621,0.26120387 -1,Goss,6,Hexagonal_Low 6/m,<0001>,0.00000000,-0.41421356 -1,Goss,6,Hexagonal_Low 6/m,<0001>,0.00000000,-0.41421356 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,-0.31010205,0.37979590 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,-0.31010205,0.37979590 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,0.31010205,0.37979590 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,0.31010205,0.37979590 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -1,Goss,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,-0.63981621,0.26120387 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,-0.63981621,0.26120387 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.41421356 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.41421356 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,0.63981621,0.26120387 -1,Goss,6,Hexagonal_Low 6/m,<11-20>,0.63981621,0.26120387 -1,Goss,32,Trigonal_High -3m,<0001>,0.00000000,-0.41421356 -1,Goss,32,Trigonal_High -3m,<0001>,0.00000000,-0.41421356 -1,Goss,32,Trigonal_High -3m,<0-110>,-0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<0-110>,-0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<0-110>,0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<0-110>,0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -1,Goss,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -1,Goss,32,Trigonal_High -3m,<1-100>,-0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<1-100>,-0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<1-100>,0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<1-100>,0.31010205,0.37979590 -1,Goss,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -1,Goss,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -1,Goss,3,Trigonal_Low -3,<0001>,0.00000000,-0.41421356 -1,Goss,3,Trigonal_Low -3,<0001>,0.00000000,-0.41421356 -1,Goss,3,Trigonal_Low -3,<-1-120>,-0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<-1-120>,-0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<-1-120>,-0.00000000,0.41421356 -1,Goss,3,Trigonal_Low -3,<-1-120>,-0.00000000,0.41421356 -1,Goss,3,Trigonal_Low -3,<-1-120>,0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<-1-120>,0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<2-1-10>,-0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<2-1-10>,-0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<2-1-10>,-0.00000000,0.41421356 -1,Goss,3,Trigonal_Low -3,<2-1-10>,-0.00000000,0.41421356 -1,Goss,3,Trigonal_Low -3,<2-1-10>,0.63981621,0.26120387 -1,Goss,3,Trigonal_Low -3,<2-1-10>,0.63981621,0.26120387 -1,Goss,422,Tetragonal_High 4/mmm,<001>,0.00000000,-0.41421356 -1,Goss,422,Tetragonal_High 4/mmm,<001>,0.00000000,-0.41421356 -1,Goss,422,Tetragonal_High 4/mmm,<100>,-0.00000000,0.41421356 -1,Goss,422,Tetragonal_High 4/mmm,<100>,-0.00000000,0.41421356 -1,Goss,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -1,Goss,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -1,Goss,422,Tetragonal_High 4/mmm,<110>,-0.47140452,0.33333333 -1,Goss,422,Tetragonal_High 4/mmm,<110>,-0.47140452,0.33333333 -1,Goss,422,Tetragonal_High 4/mmm,<110>,0.47140452,0.33333333 -1,Goss,422,Tetragonal_High 4/mmm,<110>,0.47140452,0.33333333 -1,Goss,4,Tetragonal_Low 4/m,<001>,0.00000000,-0.41421356 -1,Goss,4,Tetragonal_Low 4/m,<001>,0.00000000,-0.41421356 -1,Goss,4,Tetragonal_Low 4/m,<100>,-0.00000000,0.41421356 -1,Goss,4,Tetragonal_Low 4/m,<100>,-0.00000000,0.41421356 -1,Goss,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -1,Goss,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -1,Goss,4,Tetragonal_Low 4/m,<110>,-0.47140452,0.33333333 -1,Goss,4,Tetragonal_Low 4/m,<110>,-0.47140452,0.33333333 -1,Goss,4,Tetragonal_Low 4/m,<110>,0.47140452,0.33333333 -1,Goss,4,Tetragonal_Low 4/m,<110>,0.47140452,0.33333333 -1,Goss,222,OrthoRhombic mmm,<001>,0.00000000,-0.41421356 -1,Goss,222,OrthoRhombic mmm,<001>,0.00000000,-0.41421356 -1,Goss,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -1,Goss,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -1,Goss,222,OrthoRhombic mmm,<010>,-0.00000000,0.41421356 -1,Goss,222,OrthoRhombic mmm,<010>,-0.00000000,0.41421356 -1,Goss,2,Monoclinic 2/m,<001>,0.00000000,-0.41421356 -1,Goss,2,Monoclinic 2/m,<001>,0.00000000,-0.41421356 -1,Goss,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -1,Goss,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -1,Goss,2,Monoclinic 2/m,<010>,-0.00000000,0.41421356 -1,Goss,2,Monoclinic 2/m,<010>,-0.00000000,0.41421356 -1,Goss,1,Triclinic -1,<001>,0.00000000,-0.41421356 -1,Goss,1,Triclinic -1,<001>,0.00000000,-0.41421356 -1,Goss,1,Triclinic -1,<100>,1.00000000,0.00000000 -1,Goss,1,Triclinic -1,<100>,1.00000000,0.00000000 -1,Goss,1,Triclinic -1,<010>,-0.00000000,0.41421356 -1,Goss,1,Triclinic -1,<010>,-0.00000000,0.41421356 -2,Brass,432,Cubic_High m-3m,<001>,-0.23758314,0.33930389 -2,Brass,432,Cubic_High m-3m,<001>,-0.23758314,0.33930389 -2,Brass,432,Cubic_High m-3m,<001>,0.23758314,-0.33930389 -2,Brass,432,Cubic_High m-3m,<001>,0.23758314,-0.33930389 -2,Brass,432,Cubic_High m-3m,<001>,0.81915204,0.57357644 -2,Brass,432,Cubic_High m-3m,<001>,0.81915204,0.57357644 -2,Brass,432,Cubic_High m-3m,<011>,-0.57734412,0.00266416 -2,Brass,432,Cubic_High m-3m,<011>,-0.57734412,0.00266416 -2,Brass,432,Cubic_High m-3m,<011>,-0.57357644,0.81915204 -2,Brass,432,Cubic_High m-3m,<011>,-0.19495983,-0.54343721 -2,Brass,432,Cubic_High m-3m,<011>,-0.19495983,-0.54343721 -2,Brass,432,Cubic_High m-3m,<011>,-0.00000000,-0.00000000 -2,Brass,432,Cubic_High m-3m,<011>,-0.00000000,-0.00000000 -2,Brass,432,Cubic_High m-3m,<011>,0.19495983,0.54343721 -2,Brass,432,Cubic_High m-3m,<011>,0.19495983,0.54343721 -2,Brass,432,Cubic_High m-3m,<011>,0.57357644,-0.81915204 -2,Brass,432,Cubic_High m-3m,<011>,0.57734412,-0.00266416 -2,Brass,432,Cubic_High m-3m,<011>,0.57734412,-0.00266416 -2,Brass,432,Cubic_High m-3m,<111>,-0.26035703,-0.18230395 -2,Brass,432,Cubic_High m-3m,<111>,-0.26035703,-0.18230395 -2,Brass,432,Cubic_High m-3m,<111>,0.00461445,0.99998935 -2,Brass,432,Cubic_High m-3m,<111>,0.00461445,0.99998935 -2,Brass,432,Cubic_High m-3m,<111>,0.26035703,0.18230395 -2,Brass,432,Cubic_High m-3m,<111>,0.26035703,0.18230395 -2,Brass,432,Cubic_High m-3m,<111>,0.94126085,-0.33768033 -2,Brass,432,Cubic_High m-3m,<111>,0.94126085,-0.33768033 -2,Brass,23,Cubic_Low m-3,<001>,-0.23758314,0.33930389 -2,Brass,23,Cubic_Low m-3,<001>,-0.23758314,0.33930389 -2,Brass,23,Cubic_Low m-3,<001>,0.23758314,-0.33930389 -2,Brass,23,Cubic_Low m-3,<001>,0.23758314,-0.33930389 -2,Brass,23,Cubic_Low m-3,<001>,0.81915204,0.57357644 -2,Brass,23,Cubic_Low m-3,<001>,0.81915204,0.57357644 -2,Brass,23,Cubic_Low m-3,<011>,-0.57734412,0.00266416 -2,Brass,23,Cubic_Low m-3,<011>,-0.57734412,0.00266416 -2,Brass,23,Cubic_Low m-3,<011>,-0.57357644,0.81915204 -2,Brass,23,Cubic_Low m-3,<011>,-0.57357644,0.81915204 -2,Brass,23,Cubic_Low m-3,<011>,-0.19495983,-0.54343721 -2,Brass,23,Cubic_Low m-3,<011>,-0.19495983,-0.54343721 -2,Brass,23,Cubic_Low m-3,<011>,-0.00000000,-0.00000000 -2,Brass,23,Cubic_Low m-3,<011>,-0.00000000,-0.00000000 -2,Brass,23,Cubic_Low m-3,<011>,0.19495983,0.54343721 -2,Brass,23,Cubic_Low m-3,<011>,0.19495983,0.54343721 -2,Brass,23,Cubic_Low m-3,<011>,0.57734412,-0.00266416 -2,Brass,23,Cubic_Low m-3,<011>,0.57734412,-0.00266416 -2,Brass,23,Cubic_Low m-3,<111>,-0.94126085,0.33768033 -2,Brass,23,Cubic_Low m-3,<111>,-0.94126085,0.33768033 -2,Brass,23,Cubic_Low m-3,<111>,-0.26035703,-0.18230395 -2,Brass,23,Cubic_Low m-3,<111>,-0.26035703,-0.18230395 -2,Brass,23,Cubic_Low m-3,<111>,0.00461445,0.99998935 -2,Brass,23,Cubic_Low m-3,<111>,0.00461445,0.99998935 -2,Brass,23,Cubic_Low m-3,<111>,0.26035703,0.18230395 -2,Brass,23,Cubic_Low m-3,<111>,0.26035703,0.18230395 -2,Brass,622,Hexagonal_High 6/mmm,<0001>,0.23758314,-0.33930389 -2,Brass,622,Hexagonal_High 6/mmm,<0001>,0.23758314,-0.33930389 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,-0.47186271,0.13324336 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,-0.47186271,0.13324336 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,0.03617875,0.48897782 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,0.03617875,0.48897782 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,0.81915204,0.57357644 -2,Brass,622,Hexagonal_High 6/mmm,<10-10>,0.81915204,0.57357644 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,-0.67392715,-0.15301781 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,-0.67392715,-0.15301781 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,-0.23758314,0.33930389 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,-0.23758314,0.33930389 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,0.37428637,0.58094919 -2,Brass,622,Hexagonal_High 6/mmm,<11-20>,0.37428637,0.58094919 -2,Brass,6,Hexagonal_Low 6/m,<0001>,0.23758314,-0.33930389 -2,Brass,6,Hexagonal_Low 6/m,<0001>,0.23758314,-0.33930389 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,-0.47186271,0.13324336 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,-0.47186271,0.13324336 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,0.03617875,0.48897782 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,0.03617875,0.48897782 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,0.81915204,0.57357644 -2,Brass,6,Hexagonal_Low 6/m,<10-10>,0.81915204,0.57357644 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,-0.67392715,-0.15301781 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,-0.67392715,-0.15301781 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,-0.23758314,0.33930389 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,-0.23758314,0.33930389 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,0.37428637,0.58094919 -2,Brass,6,Hexagonal_Low 6/m,<11-20>,0.37428637,0.58094919 -2,Brass,32,Trigonal_High -3m,<0001>,0.23758314,-0.33930389 -2,Brass,32,Trigonal_High -3m,<0001>,0.23758314,-0.33930389 -2,Brass,32,Trigonal_High -3m,<0-110>,-0.47186271,0.13324336 -2,Brass,32,Trigonal_High -3m,<0-110>,-0.47186271,0.13324336 -2,Brass,32,Trigonal_High -3m,<0-110>,0.03617875,0.48897782 -2,Brass,32,Trigonal_High -3m,<0-110>,0.03617875,0.48897782 -2,Brass,32,Trigonal_High -3m,<0-110>,0.81915204,0.57357644 -2,Brass,32,Trigonal_High -3m,<0-110>,0.81915204,0.57357644 -2,Brass,32,Trigonal_High -3m,<1-100>,-0.47186271,0.13324336 -2,Brass,32,Trigonal_High -3m,<1-100>,-0.47186271,0.13324336 -2,Brass,32,Trigonal_High -3m,<1-100>,0.03617875,0.48897782 -2,Brass,32,Trigonal_High -3m,<1-100>,0.03617875,0.48897782 -2,Brass,32,Trigonal_High -3m,<1-100>,0.81915204,0.57357644 -2,Brass,32,Trigonal_High -3m,<1-100>,0.81915204,0.57357644 -2,Brass,3,Trigonal_Low -3,<0001>,0.23758314,-0.33930389 -2,Brass,3,Trigonal_Low -3,<0001>,0.23758314,-0.33930389 -2,Brass,3,Trigonal_Low -3,<-1-120>,-0.67392715,-0.15301781 -2,Brass,3,Trigonal_Low -3,<-1-120>,-0.67392715,-0.15301781 -2,Brass,3,Trigonal_Low -3,<-1-120>,-0.23758314,0.33930389 -2,Brass,3,Trigonal_Low -3,<-1-120>,-0.23758314,0.33930389 -2,Brass,3,Trigonal_Low -3,<-1-120>,0.37428637,0.58094919 -2,Brass,3,Trigonal_Low -3,<-1-120>,0.37428637,0.58094919 -2,Brass,3,Trigonal_Low -3,<2-1-10>,-0.67392715,-0.15301781 -2,Brass,3,Trigonal_Low -3,<2-1-10>,-0.67392715,-0.15301781 -2,Brass,3,Trigonal_Low -3,<2-1-10>,-0.23758314,0.33930389 -2,Brass,3,Trigonal_Low -3,<2-1-10>,-0.23758314,0.33930389 -2,Brass,3,Trigonal_Low -3,<2-1-10>,0.37428637,0.58094919 -2,Brass,3,Trigonal_Low -3,<2-1-10>,0.37428637,0.58094919 -2,Brass,422,Tetragonal_High 4/mmm,<001>,0.23758314,-0.33930389 -2,Brass,422,Tetragonal_High 4/mmm,<001>,0.23758314,-0.33930389 -2,Brass,422,Tetragonal_High 4/mmm,<100>,-0.23758314,0.33930389 -2,Brass,422,Tetragonal_High 4/mmm,<100>,-0.23758314,0.33930389 -2,Brass,422,Tetragonal_High 4/mmm,<100>,0.81915204,0.57357644 -2,Brass,422,Tetragonal_High 4/mmm,<100>,0.81915204,0.57357644 -2,Brass,422,Tetragonal_High 4/mmm,<110>,-0.57734412,0.00266416 -2,Brass,422,Tetragonal_High 4/mmm,<110>,-0.57734412,0.00266416 -2,Brass,422,Tetragonal_High 4/mmm,<110>,0.19495983,0.54343721 -2,Brass,422,Tetragonal_High 4/mmm,<110>,0.19495983,0.54343721 -2,Brass,4,Tetragonal_Low 4/m,<001>,0.23758314,-0.33930389 -2,Brass,4,Tetragonal_Low 4/m,<001>,0.23758314,-0.33930389 -2,Brass,4,Tetragonal_Low 4/m,<100>,-0.23758314,0.33930389 -2,Brass,4,Tetragonal_Low 4/m,<100>,-0.23758314,0.33930389 -2,Brass,4,Tetragonal_Low 4/m,<100>,0.81915204,0.57357644 -2,Brass,4,Tetragonal_Low 4/m,<100>,0.81915204,0.57357644 -2,Brass,4,Tetragonal_Low 4/m,<110>,-0.57734412,0.00266416 -2,Brass,4,Tetragonal_Low 4/m,<110>,-0.57734412,0.00266416 -2,Brass,4,Tetragonal_Low 4/m,<110>,0.19495983,0.54343721 -2,Brass,4,Tetragonal_Low 4/m,<110>,0.19495983,0.54343721 -2,Brass,222,OrthoRhombic mmm,<001>,0.23758314,-0.33930389 -2,Brass,222,OrthoRhombic mmm,<001>,0.23758314,-0.33930389 -2,Brass,222,OrthoRhombic mmm,<100>,0.81915204,0.57357644 -2,Brass,222,OrthoRhombic mmm,<100>,0.81915204,0.57357644 -2,Brass,222,OrthoRhombic mmm,<010>,-0.23758314,0.33930389 -2,Brass,222,OrthoRhombic mmm,<010>,-0.23758314,0.33930389 -2,Brass,2,Monoclinic 2/m,<001>,0.23758314,-0.33930389 -2,Brass,2,Monoclinic 2/m,<001>,0.23758314,-0.33930389 -2,Brass,2,Monoclinic 2/m,<100>,0.81915204,0.57357644 -2,Brass,2,Monoclinic 2/m,<100>,0.81915204,0.57357644 -2,Brass,2,Monoclinic 2/m,<010>,-0.23758314,0.33930389 -2,Brass,2,Monoclinic 2/m,<010>,-0.23758314,0.33930389 -2,Brass,1,Triclinic -1,<001>,0.23758314,-0.33930389 -2,Brass,1,Triclinic -1,<001>,0.23758314,-0.33930389 -2,Brass,1,Triclinic -1,<100>,0.81915204,0.57357644 -2,Brass,1,Triclinic -1,<100>,0.81915204,0.57357644 -2,Brass,1,Triclinic -1,<010>,-0.23758314,0.33930389 -2,Brass,1,Triclinic -1,<010>,-0.23758314,0.33930389 -3,Copper,432,Cubic_High m-3m,<001>,-0.41209184,-0.50307125 -3,Copper,432,Cubic_High m-3m,<001>,-0.41209184,-0.50307125 -3,Copper,432,Cubic_High m-3m,<001>,-0.41209184,0.50307125 -3,Copper,432,Cubic_High m-3m,<001>,-0.41209184,0.50307125 -3,Copper,432,Cubic_High m-3m,<001>,0.31529879,0.00000000 -3,Copper,432,Cubic_High m-3m,<001>,0.31529879,0.00000000 -3,Copper,432,Cubic_High m-3m,<011>,-0.52056705,0.00000000 -3,Copper,432,Cubic_High m-3m,<011>,-0.52056705,0.00000000 -3,Copper,432,Cubic_High m-3m,<011>,-0.00214159,-0.26795052 -3,Copper,432,Cubic_High m-3m,<011>,-0.00214159,-0.26795052 -3,Copper,432,Cubic_High m-3m,<011>,-0.00214159,0.26795052 -3,Copper,432,Cubic_High m-3m,<011>,-0.00214159,0.26795052 -3,Copper,432,Cubic_High m-3m,<011>,0.00000000,1.00000000 -3,Copper,432,Cubic_High m-3m,<011>,0.00000000,1.00000000 -3,Copper,432,Cubic_High m-3m,<011>,0.63071088,-0.38686523 -3,Copper,432,Cubic_High m-3m,<011>,0.63071088,-0.38686523 -3,Copper,432,Cubic_High m-3m,<011>,0.63071088,0.38686523 -3,Copper,432,Cubic_High m-3m,<011>,0.63071088,0.38686523 -3,Copper,432,Cubic_High m-3m,<111>,-0.17394897,-0.00000000 -3,Copper,432,Cubic_High m-3m,<111>,-0.17394897,-0.00000000 -3,Copper,432,Cubic_High m-3m,<111>,0.22482588,-0.55433207 -3,Copper,432,Cubic_High m-3m,<111>,0.22482588,-0.55433207 -3,Copper,432,Cubic_High m-3m,<111>,0.22482588,0.55433207 -3,Copper,432,Cubic_High m-3m,<111>,0.22482588,0.55433207 -3,Copper,432,Cubic_High m-3m,<111>,0.99539614,-0.00000000 -3,Copper,432,Cubic_High m-3m,<111>,0.99539614,0.00000000 -3,Copper,23,Cubic_Low m-3,<001>,-0.41209184,-0.50307125 -3,Copper,23,Cubic_Low m-3,<001>,-0.41209184,-0.50307125 -3,Copper,23,Cubic_Low m-3,<001>,-0.41209184,0.50307125 -3,Copper,23,Cubic_Low m-3,<001>,-0.41209184,0.50307125 -3,Copper,23,Cubic_Low m-3,<001>,0.31529879,0.00000000 -3,Copper,23,Cubic_Low m-3,<001>,0.31529879,0.00000000 -3,Copper,23,Cubic_Low m-3,<011>,-0.52056705,0.00000000 -3,Copper,23,Cubic_Low m-3,<011>,-0.52056705,0.00000000 -3,Copper,23,Cubic_Low m-3,<011>,-0.00214159,-0.26795052 -3,Copper,23,Cubic_Low m-3,<011>,-0.00214159,-0.26795052 -3,Copper,23,Cubic_Low m-3,<011>,-0.00214159,0.26795052 -3,Copper,23,Cubic_Low m-3,<011>,-0.00214159,0.26795052 -3,Copper,23,Cubic_Low m-3,<011>,0.00000000,1.00000000 -3,Copper,23,Cubic_Low m-3,<011>,0.00000000,1.00000000 -3,Copper,23,Cubic_Low m-3,<011>,0.63071088,-0.38686523 -3,Copper,23,Cubic_Low m-3,<011>,0.63071088,-0.38686523 -3,Copper,23,Cubic_Low m-3,<011>,0.63071088,0.38686523 -3,Copper,23,Cubic_Low m-3,<011>,0.63071088,0.38686523 -3,Copper,23,Cubic_Low m-3,<111>,-0.17394897,-0.00000000 -3,Copper,23,Cubic_Low m-3,<111>,-0.17394897,-0.00000000 -3,Copper,23,Cubic_Low m-3,<111>,0.22482588,-0.55433207 -3,Copper,23,Cubic_Low m-3,<111>,0.22482588,-0.55433207 -3,Copper,23,Cubic_Low m-3,<111>,0.22482588,0.55433207 -3,Copper,23,Cubic_Low m-3,<111>,0.22482588,0.55433207 -3,Copper,23,Cubic_Low m-3,<111>,0.99539614,-0.00000000 -3,Copper,23,Cubic_Low m-3,<111>,0.99539614,-0.00000000 -3,Copper,622,Hexagonal_High 6/mmm,<0001>,0.31529879,-0.00000000 -3,Copper,622,Hexagonal_High 6/mmm,<0001>,0.31529879,-0.00000000 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.50915294,-0.16654676 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.50915294,-0.16654676 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.41209184,0.50307125 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.41209184,0.50307125 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.18460681,-0.84106728 -3,Copper,622,Hexagonal_High 6/mmm,<10-10>,-0.18460681,-0.84106728 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.50915294,0.16654676 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.50915294,0.16654676 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.41209184,-0.50307125 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.41209184,-0.50307125 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.18460681,0.84106728 -3,Copper,622,Hexagonal_High 6/mmm,<11-20>,-0.18460681,0.84106728 -3,Copper,6,Hexagonal_Low 6/m,<0001>,0.31529879,-0.00000000 -3,Copper,6,Hexagonal_Low 6/m,<0001>,0.31529879,-0.00000000 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.50915294,-0.16654676 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.50915294,-0.16654676 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.41209184,0.50307125 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.41209184,0.50307125 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.18460681,-0.84106728 -3,Copper,6,Hexagonal_Low 6/m,<10-10>,-0.18460681,-0.84106728 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.50915294,0.16654676 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.50915294,0.16654676 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.41209184,-0.50307125 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.41209184,-0.50307125 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.18460681,0.84106728 -3,Copper,6,Hexagonal_Low 6/m,<11-20>,-0.18460681,0.84106728 -3,Copper,32,Trigonal_High -3m,<0001>,0.31529879,-0.00000000 -3,Copper,32,Trigonal_High -3m,<0001>,0.31529879,-0.00000000 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.50915294,-0.16654676 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.50915294,-0.16654676 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.41209184,0.50307125 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.41209184,0.50307125 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.18460681,-0.84106728 -3,Copper,32,Trigonal_High -3m,<0-110>,-0.18460681,-0.84106728 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.50915294,-0.16654676 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.50915294,-0.16654676 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.41209184,0.50307125 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.41209184,0.50307125 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.18460681,-0.84106728 -3,Copper,32,Trigonal_High -3m,<1-100>,-0.18460681,-0.84106728 -3,Copper,3,Trigonal_Low -3,<0001>,0.31529879,-0.00000000 -3,Copper,3,Trigonal_Low -3,<0001>,0.31529879,-0.00000000 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.50915294,0.16654676 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.50915294,0.16654676 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.41209184,-0.50307125 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.41209184,-0.50307125 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.18460681,0.84106728 -3,Copper,3,Trigonal_Low -3,<-1-120>,-0.18460681,0.84106728 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.50915294,0.16654676 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.50915294,0.16654676 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.41209184,-0.50307125 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.41209184,-0.50307125 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.18460681,0.84106728 -3,Copper,3,Trigonal_Low -3,<2-1-10>,-0.18460681,0.84106728 -3,Copper,422,Tetragonal_High 4/mmm,<001>,0.31529879,0.00000000 -3,Copper,422,Tetragonal_High 4/mmm,<001>,0.31529879,0.00000000 -3,Copper,422,Tetragonal_High 4/mmm,<100>,-0.41209184,-0.50307125 -3,Copper,422,Tetragonal_High 4/mmm,<100>,-0.41209184,-0.50307125 -3,Copper,422,Tetragonal_High 4/mmm,<100>,-0.41209184,0.50307125 -3,Copper,422,Tetragonal_High 4/mmm,<100>,-0.41209184,0.50307125 -3,Copper,422,Tetragonal_High 4/mmm,<110>,-0.52056705,-0.00000000 -3,Copper,422,Tetragonal_High 4/mmm,<110>,-0.52056705,-0.00000000 -3,Copper,422,Tetragonal_High 4/mmm,<110>,-0.00000000,1.00000000 -3,Copper,422,Tetragonal_High 4/mmm,<110>,-0.00000000,1.00000000 -3,Copper,4,Tetragonal_Low 4/m,<001>,0.31529879,0.00000000 -3,Copper,4,Tetragonal_Low 4/m,<001>,0.31529879,0.00000000 -3,Copper,4,Tetragonal_Low 4/m,<100>,-0.41209184,-0.50307125 -3,Copper,4,Tetragonal_Low 4/m,<100>,-0.41209184,-0.50307125 -3,Copper,4,Tetragonal_Low 4/m,<100>,-0.41209184,0.50307125 -3,Copper,4,Tetragonal_Low 4/m,<100>,-0.41209184,0.50307125 -3,Copper,4,Tetragonal_Low 4/m,<110>,-0.52056705,-0.00000000 -3,Copper,4,Tetragonal_Low 4/m,<110>,-0.52056705,-0.00000000 -3,Copper,4,Tetragonal_Low 4/m,<110>,0.00000000,-1.00000000 -3,Copper,4,Tetragonal_Low 4/m,<110>,-0.00000000,-1.00000000 -3,Copper,222,OrthoRhombic mmm,<001>,0.31529879,0.00000000 -3,Copper,222,OrthoRhombic mmm,<001>,0.31529879,0.00000000 -3,Copper,222,OrthoRhombic mmm,<100>,-0.41209184,0.50307125 -3,Copper,222,OrthoRhombic mmm,<100>,-0.41209184,0.50307125 -3,Copper,222,OrthoRhombic mmm,<010>,-0.41209184,-0.50307125 -3,Copper,222,OrthoRhombic mmm,<010>,-0.41209184,-0.50307125 -3,Copper,2,Monoclinic 2/m,<001>,0.31529879,0.00000000 -3,Copper,2,Monoclinic 2/m,<001>,0.31529879,0.00000000 -3,Copper,2,Monoclinic 2/m,<100>,-0.41209184,0.50307125 -3,Copper,2,Monoclinic 2/m,<100>,-0.41209184,0.50307125 -3,Copper,2,Monoclinic 2/m,<010>,-0.41209184,-0.50307125 -3,Copper,2,Monoclinic 2/m,<010>,-0.41209184,-0.50307125 -3,Copper,1,Triclinic -1,<001>,0.31529879,0.00000000 -3,Copper,1,Triclinic -1,<001>,0.31529879,0.00000000 -3,Copper,1,Triclinic -1,<100>,-0.41209184,0.50307125 -3,Copper,1,Triclinic -1,<100>,-0.41209184,0.50307125 -3,Copper,1,Triclinic -1,<010>,-0.41209184,-0.50307125 -3,Copper,1,Triclinic -1,<010>,-0.41209184,-0.50307125 -4,S,432,Cubic_High m-3m,<001>,-0.60452159,-0.45318449 -4,S,432,Cubic_High m-3m,<001>,-0.60452159,-0.45318449 -4,S,432,Cubic_High m-3m,<001>,-0.24484029,0.49188327 -4,S,432,Cubic_High m-3m,<001>,-0.24484029,0.49188327 -4,S,432,Cubic_High m-3m,<001>,0.28680417,-0.17232933 -4,S,432,Cubic_High m-3m,<001>,0.28680417,-0.17232933 -4,S,432,Cubic_High m-3m,<011>,-0.51528578,0.08033568 -4,S,432,Cubic_High m-3m,<011>,-0.51528578,0.08033568 -4,S,432,Cubic_High m-3m,<011>,-0.10210173,-0.35677249 -4,S,432,Cubic_High m-3m,<011>,-0.10210173,-0.35677249 -4,S,432,Cubic_High m-3m,<011>,0.05082713,0.16212166 -4,S,432,Cubic_High m-3m,<011>,0.05082713,0.16212166 -4,S,432,Cubic_High m-3m,<011>,0.23465019,0.79455715 -4,S,432,Cubic_High m-3m,<011>,0.23465019,0.79455715 -4,S,432,Cubic_High m-3m,<011>,0.53201127,-0.63556087 -4,S,432,Cubic_High m-3m,<011>,0.53201127,-0.63556087 -4,S,432,Cubic_High m-3m,<011>,0.66277774,0.13767834 -4,S,432,Cubic_High m-3m,<011>,0.66277774,0.13767834 -4,S,432,Cubic_High m-3m,<111>,-0.95342022,0.28034255 -4,S,432,Cubic_High m-3m,<111>,-0.95342022,0.28034255 -4,S,432,Cubic_High m-3m,<111>,-0.18860386,-0.03931558 -4,S,432,Cubic_High m-3m,<111>,-0.18860386,-0.03931558 -4,S,432,Cubic_High m-3m,<111>,0.05393038,-0.72435237 -4,S,432,Cubic_High m-3m,<111>,0.05393038,-0.72435237 -4,S,432,Cubic_High m-3m,<111>,0.32552487,0.36607030 -4,S,432,Cubic_High m-3m,<111>,0.32552487,0.36607030 -4,S,23,Cubic_Low m-3,<001>,-0.60452159,-0.45318449 -4,S,23,Cubic_Low m-3,<001>,-0.60452159,-0.45318449 -4,S,23,Cubic_Low m-3,<001>,-0.24484029,0.49188327 -4,S,23,Cubic_Low m-3,<001>,-0.24484029,0.49188327 -4,S,23,Cubic_Low m-3,<001>,0.28680417,-0.17232933 -4,S,23,Cubic_Low m-3,<001>,0.28680417,-0.17232933 -4,S,23,Cubic_Low m-3,<011>,-0.51528578,0.08033568 -4,S,23,Cubic_Low m-3,<011>,-0.51528578,0.08033568 -4,S,23,Cubic_Low m-3,<011>,-0.10210173,-0.35677249 -4,S,23,Cubic_Low m-3,<011>,-0.10210173,-0.35677249 -4,S,23,Cubic_Low m-3,<011>,0.05082713,0.16212166 -4,S,23,Cubic_Low m-3,<011>,0.05082713,0.16212166 -4,S,23,Cubic_Low m-3,<011>,0.23465019,0.79455715 -4,S,23,Cubic_Low m-3,<011>,0.23465019,0.79455715 -4,S,23,Cubic_Low m-3,<011>,0.53201127,-0.63556087 -4,S,23,Cubic_Low m-3,<011>,0.53201127,-0.63556087 -4,S,23,Cubic_Low m-3,<011>,0.66277774,0.13767834 -4,S,23,Cubic_Low m-3,<011>,0.66277774,0.13767834 -4,S,23,Cubic_Low m-3,<111>,-0.95342022,0.28034255 -4,S,23,Cubic_Low m-3,<111>,-0.95342022,0.28034255 -4,S,23,Cubic_Low m-3,<111>,-0.18860386,-0.03931558 -4,S,23,Cubic_Low m-3,<111>,-0.18860386,-0.03931558 -4,S,23,Cubic_Low m-3,<111>,0.05393038,-0.72435237 -4,S,23,Cubic_Low m-3,<111>,0.05393038,-0.72435237 -4,S,23,Cubic_Low m-3,<111>,0.32552487,0.36607030 -4,S,23,Cubic_Low m-3,<111>,0.32552487,0.36607030 -4,S,622,Hexagonal_High 6/mmm,<0001>,0.28680417,-0.17232933 -4,S,622,Hexagonal_High 6/mmm,<0001>,0.28680417,-0.17232933 -4,S,622,Hexagonal_High 6/mmm,<10-10>,-0.56796689,-0.08099711 -4,S,622,Hexagonal_High 6/mmm,<10-10>,-0.56796689,-0.08099711 -4,S,622,Hexagonal_High 6/mmm,<10-10>,-0.24484029,0.49188327 -4,S,622,Hexagonal_High 6/mmm,<10-10>,-0.24484029,0.49188327 -4,S,622,Hexagonal_High 6/mmm,<10-10>,0.46389385,0.85072490 -4,S,622,Hexagonal_High 6/mmm,<10-10>,0.46389385,0.85072490 -4,S,622,Hexagonal_High 6/mmm,<11-20>,-0.60452159,-0.45318449 -4,S,622,Hexagonal_High 6/mmm,<11-20>,-0.60452159,-0.45318449 -4,S,622,Hexagonal_High 6/mmm,<11-20>,-0.44383848,0.22854812 -4,S,622,Hexagonal_High 6/mmm,<11-20>,-0.44383848,0.22854812 -4,S,622,Hexagonal_High 6/mmm,<11-20>,0.04451583,0.71014161 -4,S,622,Hexagonal_High 6/mmm,<11-20>,0.04451583,0.71014161 -4,S,6,Hexagonal_Low 6/m,<0001>,0.28680417,-0.17232933 -4,S,6,Hexagonal_Low 6/m,<0001>,0.28680417,-0.17232933 -4,S,6,Hexagonal_Low 6/m,<10-10>,-0.56796689,-0.08099711 -4,S,6,Hexagonal_Low 6/m,<10-10>,-0.56796689,-0.08099711 -4,S,6,Hexagonal_Low 6/m,<10-10>,-0.24484029,0.49188327 -4,S,6,Hexagonal_Low 6/m,<10-10>,-0.24484029,0.49188327 -4,S,6,Hexagonal_Low 6/m,<10-10>,0.46389385,0.85072490 -4,S,6,Hexagonal_Low 6/m,<10-10>,0.46389385,0.85072490 -4,S,6,Hexagonal_Low 6/m,<11-20>,-0.60452159,-0.45318449 -4,S,6,Hexagonal_Low 6/m,<11-20>,-0.60452159,-0.45318449 -4,S,6,Hexagonal_Low 6/m,<11-20>,-0.44383848,0.22854812 -4,S,6,Hexagonal_Low 6/m,<11-20>,-0.44383848,0.22854812 -4,S,6,Hexagonal_Low 6/m,<11-20>,0.04451583,0.71014161 -4,S,6,Hexagonal_Low 6/m,<11-20>,0.04451583,0.71014161 -4,S,32,Trigonal_High -3m,<0001>,0.28680417,-0.17232933 -4,S,32,Trigonal_High -3m,<0001>,0.28680417,-0.17232933 -4,S,32,Trigonal_High -3m,<0-110>,-0.56796689,-0.08099711 -4,S,32,Trigonal_High -3m,<0-110>,-0.56796689,-0.08099711 -4,S,32,Trigonal_High -3m,<0-110>,-0.24484029,0.49188327 -4,S,32,Trigonal_High -3m,<0-110>,-0.24484029,0.49188327 -4,S,32,Trigonal_High -3m,<0-110>,0.46389385,0.85072490 -4,S,32,Trigonal_High -3m,<0-110>,0.46389385,0.85072490 -4,S,32,Trigonal_High -3m,<1-100>,-0.56796689,-0.08099711 -4,S,32,Trigonal_High -3m,<1-100>,-0.56796689,-0.08099711 -4,S,32,Trigonal_High -3m,<1-100>,-0.24484029,0.49188327 -4,S,32,Trigonal_High -3m,<1-100>,-0.24484029,0.49188327 -4,S,32,Trigonal_High -3m,<1-100>,0.46389385,0.85072490 -4,S,32,Trigonal_High -3m,<1-100>,0.46389385,0.85072490 -4,S,3,Trigonal_Low -3,<0001>,0.28680417,-0.17232933 -4,S,3,Trigonal_Low -3,<0001>,0.28680417,-0.17232933 -4,S,3,Trigonal_Low -3,<-1-120>,-0.60452159,-0.45318449 -4,S,3,Trigonal_Low -3,<-1-120>,-0.60452159,-0.45318449 -4,S,3,Trigonal_Low -3,<-1-120>,-0.44383848,0.22854812 -4,S,3,Trigonal_Low -3,<-1-120>,-0.44383848,0.22854812 -4,S,3,Trigonal_Low -3,<-1-120>,0.04451583,0.71014161 -4,S,3,Trigonal_Low -3,<-1-120>,0.04451583,0.71014161 -4,S,3,Trigonal_Low -3,<2-1-10>,-0.60452159,-0.45318449 -4,S,3,Trigonal_Low -3,<2-1-10>,-0.60452159,-0.45318449 -4,S,3,Trigonal_Low -3,<2-1-10>,-0.44383848,0.22854812 -4,S,3,Trigonal_Low -3,<2-1-10>,-0.44383848,0.22854812 -4,S,3,Trigonal_Low -3,<2-1-10>,0.04451583,0.71014161 -4,S,3,Trigonal_Low -3,<2-1-10>,0.04451583,0.71014161 -4,S,422,Tetragonal_High 4/mmm,<001>,0.28680417,-0.17232933 -4,S,422,Tetragonal_High 4/mmm,<001>,0.28680417,-0.17232933 -4,S,422,Tetragonal_High 4/mmm,<100>,-0.60452159,-0.45318449 -4,S,422,Tetragonal_High 4/mmm,<100>,-0.60452159,-0.45318449 -4,S,422,Tetragonal_High 4/mmm,<100>,-0.24484029,0.49188327 -4,S,422,Tetragonal_High 4/mmm,<100>,-0.24484029,0.49188327 -4,S,422,Tetragonal_High 4/mmm,<110>,-0.51528578,0.08033568 -4,S,422,Tetragonal_High 4/mmm,<110>,-0.51528578,0.08033568 -4,S,422,Tetragonal_High 4/mmm,<110>,0.23465019,0.79455715 -4,S,422,Tetragonal_High 4/mmm,<110>,0.23465019,0.79455715 -4,S,4,Tetragonal_Low 4/m,<001>,0.28680417,-0.17232933 -4,S,4,Tetragonal_Low 4/m,<001>,0.28680417,-0.17232933 -4,S,4,Tetragonal_Low 4/m,<100>,-0.60452159,-0.45318449 -4,S,4,Tetragonal_Low 4/m,<100>,-0.60452159,-0.45318449 -4,S,4,Tetragonal_Low 4/m,<100>,-0.24484029,0.49188327 -4,S,4,Tetragonal_Low 4/m,<100>,-0.24484029,0.49188327 -4,S,4,Tetragonal_Low 4/m,<110>,-0.51528578,0.08033568 -4,S,4,Tetragonal_Low 4/m,<110>,-0.51528578,0.08033568 -4,S,4,Tetragonal_Low 4/m,<110>,0.23465019,0.79455715 -4,S,4,Tetragonal_Low 4/m,<110>,0.23465019,0.79455715 -4,S,222,OrthoRhombic mmm,<001>,0.28680417,-0.17232933 -4,S,222,OrthoRhombic mmm,<001>,0.28680417,-0.17232933 -4,S,222,OrthoRhombic mmm,<100>,-0.24484029,0.49188327 -4,S,222,OrthoRhombic mmm,<100>,-0.24484029,0.49188327 -4,S,222,OrthoRhombic mmm,<010>,-0.60452159,-0.45318449 -4,S,222,OrthoRhombic mmm,<010>,-0.60452159,-0.45318449 -4,S,2,Monoclinic 2/m,<001>,0.28680417,-0.17232933 -4,S,2,Monoclinic 2/m,<001>,0.28680417,-0.17232933 -4,S,2,Monoclinic 2/m,<100>,-0.24484029,0.49188327 -4,S,2,Monoclinic 2/m,<100>,-0.24484029,0.49188327 -4,S,2,Monoclinic 2/m,<010>,-0.60452159,-0.45318449 -4,S,2,Monoclinic 2/m,<010>,-0.60452159,-0.45318449 -4,S,1,Triclinic -1,<001>,0.28680417,-0.17232933 -4,S,1,Triclinic -1,<001>,0.28680417,-0.17232933 -4,S,1,Triclinic -1,<100>,-0.24484029,0.49188327 -4,S,1,Triclinic -1,<100>,-0.24484029,0.49188327 -4,S,1,Triclinic -1,<010>,-0.60452159,-0.45318449 -4,S,1,Triclinic -1,<010>,-0.60452159,-0.45318449 -5,S1,432,Cubic_High m-3m,<001>,-0.67666040,-0.43958718 -5,S1,432,Cubic_High m-3m,<001>,-0.67666040,-0.43958718 -5,S1,432,Cubic_High m-3m,<001>,-0.27563271,0.54803588 -5,S1,432,Cubic_High m-3m,<001>,-0.27563271,0.54803588 -5,S1,432,Cubic_High m-3m,<001>,0.21949113,-0.15368934 -5,S1,432,Cubic_High m-3m,<001>,0.21949113,-0.15368934 -5,S1,432,Cubic_High m-3m,<011>,-0.58699928,0.12695795 -5,S1,432,Cubic_High m-3m,<011>,-0.58699928,0.12695795 -5,S1,432,Cubic_High m-3m,<011>,-0.16458398,-0.32881732 -5,S1,432,Cubic_High m-3m,<011>,-0.16458398,-0.32881732 -5,S1,432,Cubic_High m-3m,<011>,0.00330698,0.18643213 -5,S1,432,Cubic_High m-3m,<011>,0.00330698,0.18643213 -5,S1,432,Cubic_High m-3m,<011>,0.25307574,0.80242128 -5,S1,432,Cubic_High m-3m,<011>,0.25307574,0.80242128 -5,S1,432,Cubic_High m-3m,<011>,0.44339083,-0.59283977 -5,S1,432,Cubic_High m-3m,<011>,0.44339083,-0.59283977 -5,S1,432,Cubic_High m-3m,<011>,0.59413370,0.11875112 -5,S1,432,Cubic_High m-3m,<011>,0.59413370,0.11875112 -5,S1,432,Cubic_High m-3m,<111>,-0.24845851,-0.00701408 -5,S1,432,Cubic_High m-3m,<111>,-0.24845851,-0.00701408 -5,S1,432,Cubic_High m-3m,<111>,-0.00404551,-0.68569013 -5,S1,432,Cubic_High m-3m,<111>,-0.00404551,-0.68569013 -5,S1,432,Cubic_High m-3m,<111>,0.29179833,0.36693564 -5,S1,432,Cubic_High m-3m,<111>,0.29179833,0.36693564 -5,S1,432,Cubic_High m-3m,<111>,0.84285611,-0.28479985 -5,S1,432,Cubic_High m-3m,<111>,0.84285611,-0.28479985 -5,S1,23,Cubic_Low m-3,<001>,-0.67666040,-0.43958718 -5,S1,23,Cubic_Low m-3,<001>,-0.67666040,-0.43958718 -5,S1,23,Cubic_Low m-3,<001>,-0.27563271,0.54803588 -5,S1,23,Cubic_Low m-3,<001>,-0.27563271,0.54803588 -5,S1,23,Cubic_Low m-3,<001>,0.21949113,-0.15368934 -5,S1,23,Cubic_Low m-3,<001>,0.21949113,-0.15368934 -5,S1,23,Cubic_Low m-3,<011>,-0.58699928,0.12695795 -5,S1,23,Cubic_Low m-3,<011>,-0.58699928,0.12695795 -5,S1,23,Cubic_Low m-3,<011>,-0.16458398,-0.32881732 -5,S1,23,Cubic_Low m-3,<011>,-0.16458398,-0.32881732 -5,S1,23,Cubic_Low m-3,<011>,0.00330698,0.18643213 -5,S1,23,Cubic_Low m-3,<011>,0.00330698,0.18643213 -5,S1,23,Cubic_Low m-3,<011>,0.25307574,0.80242128 -5,S1,23,Cubic_Low m-3,<011>,0.25307574,0.80242128 -5,S1,23,Cubic_Low m-3,<011>,0.44339083,-0.59283977 -5,S1,23,Cubic_Low m-3,<011>,0.44339083,-0.59283977 -5,S1,23,Cubic_Low m-3,<011>,0.59413370,0.11875112 -5,S1,23,Cubic_Low m-3,<011>,0.59413370,0.11875112 -5,S1,23,Cubic_Low m-3,<111>,-0.24845851,-0.00701408 -5,S1,23,Cubic_Low m-3,<111>,-0.24845851,-0.00701408 -5,S1,23,Cubic_Low m-3,<111>,-0.00404551,-0.68569013 -5,S1,23,Cubic_Low m-3,<111>,-0.00404551,-0.68569013 -5,S1,23,Cubic_Low m-3,<111>,0.29179833,0.36693564 -5,S1,23,Cubic_Low m-3,<111>,0.29179833,0.36693564 -5,S1,23,Cubic_Low m-3,<111>,0.84285611,-0.28479985 -5,S1,23,Cubic_Low m-3,<111>,0.84285611,-0.28479985 -5,S1,622,Hexagonal_High 6/mmm,<0001>,0.21949113,-0.15368934 -5,S1,622,Hexagonal_High 6/mmm,<0001>,0.21949113,-0.15368934 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,-0.64565634,-0.04465702 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,-0.64565634,-0.04465702 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,-0.27563271,0.54803588 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,-0.27563271,0.54803588 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,0.48828647,0.82344401 -5,S1,622,Hexagonal_High 6/mmm,<10-10>,0.48828647,0.82344401 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,-0.67666040,-0.43958718 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,-0.67666040,-0.43958718 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,-0.50510566,0.28265703 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,-0.50510566,0.28265703 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,0.04891828,0.74287571 -5,S1,622,Hexagonal_High 6/mmm,<11-20>,0.04891828,0.74287571 -5,S1,6,Hexagonal_Low 6/m,<0001>,0.21949113,-0.15368934 -5,S1,6,Hexagonal_Low 6/m,<0001>,0.21949113,-0.15368934 -5,S1,6,Hexagonal_Low 6/m,<10-10>,-0.64565634,-0.04465702 -5,S1,6,Hexagonal_Low 6/m,<10-10>,-0.64565634,-0.04465702 -5,S1,6,Hexagonal_Low 6/m,<10-10>,-0.27563271,0.54803588 -5,S1,6,Hexagonal_Low 6/m,<10-10>,-0.27563271,0.54803588 -5,S1,6,Hexagonal_Low 6/m,<10-10>,0.48828647,0.82344401 -5,S1,6,Hexagonal_Low 6/m,<10-10>,0.48828647,0.82344401 -5,S1,6,Hexagonal_Low 6/m,<11-20>,-0.67666040,-0.43958718 -5,S1,6,Hexagonal_Low 6/m,<11-20>,-0.67666040,-0.43958718 -5,S1,6,Hexagonal_Low 6/m,<11-20>,-0.50510566,0.28265703 -5,S1,6,Hexagonal_Low 6/m,<11-20>,-0.50510566,0.28265703 -5,S1,6,Hexagonal_Low 6/m,<11-20>,0.04891828,0.74287571 -5,S1,6,Hexagonal_Low 6/m,<11-20>,0.04891828,0.74287571 -5,S1,32,Trigonal_High -3m,<0001>,0.21949113,-0.15368934 -5,S1,32,Trigonal_High -3m,<0001>,0.21949113,-0.15368934 -5,S1,32,Trigonal_High -3m,<0-110>,-0.64565634,-0.04465702 -5,S1,32,Trigonal_High -3m,<0-110>,-0.64565634,-0.04465702 -5,S1,32,Trigonal_High -3m,<0-110>,-0.27563271,0.54803588 -5,S1,32,Trigonal_High -3m,<0-110>,-0.27563271,0.54803588 -5,S1,32,Trigonal_High -3m,<0-110>,0.48828647,0.82344401 -5,S1,32,Trigonal_High -3m,<0-110>,0.48828647,0.82344401 -5,S1,32,Trigonal_High -3m,<1-100>,-0.64565634,-0.04465702 -5,S1,32,Trigonal_High -3m,<1-100>,-0.64565634,-0.04465702 -5,S1,32,Trigonal_High -3m,<1-100>,-0.27563271,0.54803588 -5,S1,32,Trigonal_High -3m,<1-100>,-0.27563271,0.54803588 -5,S1,32,Trigonal_High -3m,<1-100>,0.48828647,0.82344401 -5,S1,32,Trigonal_High -3m,<1-100>,0.48828647,0.82344401 -5,S1,3,Trigonal_Low -3,<0001>,0.21949113,-0.15368934 -5,S1,3,Trigonal_Low -3,<0001>,0.21949113,-0.15368934 -5,S1,3,Trigonal_Low -3,<-1-120>,-0.67666040,-0.43958718 -5,S1,3,Trigonal_Low -3,<-1-120>,-0.67666040,-0.43958718 -5,S1,3,Trigonal_Low -3,<-1-120>,-0.50510566,0.28265703 -5,S1,3,Trigonal_Low -3,<-1-120>,-0.50510566,0.28265703 -5,S1,3,Trigonal_Low -3,<-1-120>,0.04891828,0.74287571 -5,S1,3,Trigonal_Low -3,<-1-120>,0.04891828,0.74287571 -5,S1,3,Trigonal_Low -3,<2-1-10>,-0.67666040,-0.43958718 -5,S1,3,Trigonal_Low -3,<2-1-10>,-0.67666040,-0.43958718 -5,S1,3,Trigonal_Low -3,<2-1-10>,-0.50510566,0.28265703 -5,S1,3,Trigonal_Low -3,<2-1-10>,-0.50510566,0.28265703 -5,S1,3,Trigonal_Low -3,<2-1-10>,0.04891828,0.74287571 -5,S1,3,Trigonal_Low -3,<2-1-10>,0.04891828,0.74287571 -5,S1,422,Tetragonal_High 4/mmm,<001>,0.21949113,-0.15368934 -5,S1,422,Tetragonal_High 4/mmm,<001>,0.21949113,-0.15368934 -5,S1,422,Tetragonal_High 4/mmm,<100>,-0.67666040,-0.43958718 -5,S1,422,Tetragonal_High 4/mmm,<100>,-0.67666040,-0.43958718 -5,S1,422,Tetragonal_High 4/mmm,<100>,-0.27563271,0.54803588 -5,S1,422,Tetragonal_High 4/mmm,<100>,-0.27563271,0.54803588 -5,S1,422,Tetragonal_High 4/mmm,<110>,-0.58699928,0.12695795 -5,S1,422,Tetragonal_High 4/mmm,<110>,-0.58699928,0.12695795 -5,S1,422,Tetragonal_High 4/mmm,<110>,0.25307574,0.80242128 -5,S1,422,Tetragonal_High 4/mmm,<110>,0.25307574,0.80242128 -5,S1,4,Tetragonal_Low 4/m,<001>,0.21949113,-0.15368934 -5,S1,4,Tetragonal_Low 4/m,<001>,0.21949113,-0.15368934 -5,S1,4,Tetragonal_Low 4/m,<100>,-0.67666040,-0.43958718 -5,S1,4,Tetragonal_Low 4/m,<100>,-0.67666040,-0.43958718 -5,S1,4,Tetragonal_Low 4/m,<100>,-0.27563271,0.54803588 -5,S1,4,Tetragonal_Low 4/m,<100>,-0.27563271,0.54803588 -5,S1,4,Tetragonal_Low 4/m,<110>,-0.58699928,0.12695795 -5,S1,4,Tetragonal_Low 4/m,<110>,-0.58699928,0.12695795 -5,S1,4,Tetragonal_Low 4/m,<110>,0.25307574,0.80242128 -5,S1,4,Tetragonal_Low 4/m,<110>,0.25307574,0.80242128 -5,S1,222,OrthoRhombic mmm,<001>,0.21949113,-0.15368934 -5,S1,222,OrthoRhombic mmm,<001>,0.21949113,-0.15368934 -5,S1,222,OrthoRhombic mmm,<100>,-0.27563271,0.54803588 -5,S1,222,OrthoRhombic mmm,<100>,-0.27563271,0.54803588 -5,S1,222,OrthoRhombic mmm,<010>,-0.67666040,-0.43958718 -5,S1,222,OrthoRhombic mmm,<010>,-0.67666040,-0.43958718 -5,S1,2,Monoclinic 2/m,<001>,0.21949113,-0.15368934 -5,S1,2,Monoclinic 2/m,<001>,0.21949113,-0.15368934 -5,S1,2,Monoclinic 2/m,<100>,-0.27563271,0.54803588 -5,S1,2,Monoclinic 2/m,<100>,-0.27563271,0.54803588 -5,S1,2,Monoclinic 2/m,<010>,-0.67666040,-0.43958718 -5,S1,2,Monoclinic 2/m,<010>,-0.67666040,-0.43958718 -5,S1,1,Triclinic -1,<001>,0.21949113,-0.15368934 -5,S1,1,Triclinic -1,<001>,0.21949113,-0.15368934 -5,S1,1,Triclinic -1,<100>,-0.27563271,0.54803588 -5,S1,1,Triclinic -1,<100>,-0.27563271,0.54803588 -5,S1,1,Triclinic -1,<010>,-0.67666040,-0.43958718 -5,S1,1,Triclinic -1,<010>,-0.67666040,-0.43958718 -6,S2,432,Cubic_High m-3m,<001>,-0.71285088,-0.31878850 -6,S2,432,Cubic_High m-3m,<001>,-0.71285088,-0.31878850 -6,S2,432,Cubic_High m-3m,<001>,-0.14878083,0.54202863 -6,S2,432,Cubic_High m-3m,<001>,-0.14878083,0.54202863 -6,S2,432,Cubic_High m-3m,<001>,0.22294991,-0.22294991 -6,S2,432,Cubic_High m-3m,<001>,0.22294991,-0.22294991 -6,S2,432,Cubic_High m-3m,<011>,-0.51081767,0.19652653 -6,S2,432,Cubic_High m-3m,<011>,-0.51081767,0.19652653 -6,S2,432,Cubic_High m-3m,<011>,-0.19390695,-0.32379584 -6,S2,432,Cubic_High m-3m,<011>,-0.19390695,-0.32379584 -6,S2,432,Cubic_High m-3m,<011>,0.06518126,0.15190139 -6,S2,432,Cubic_High m-3m,<011>,0.06518126,0.15190139 -6,S2,432,Cubic_High m-3m,<011>,0.36865582,-0.71745210 -6,S2,432,Cubic_High m-3m,<011>,0.36865582,-0.71745210 -6,S2,432,Cubic_High m-3m,<011>,0.38987231,0.72110759 -6,S2,432,Cubic_High m-3m,<011>,0.38987231,0.72110759 -6,S2,432,Cubic_High m-3m,<011>,0.64854511,-0.00477946 -6,S2,432,Cubic_High m-3m,<011>,0.64854511,-0.00477946 -6,S2,432,Cubic_High m-3m,<111>,-0.21312918,0.00668525 -6,S2,432,Cubic_High m-3m,<111>,-0.21312918,0.00668525 -6,S2,432,Cubic_High m-3m,<111>,-0.11168515,-0.71486516 -6,S2,432,Cubic_High m-3m,<111>,-0.11168515,-0.71486516 -6,S2,432,Cubic_High m-3m,<111>,0.37654403,0.28786998 -6,S2,432,Cubic_High m-3m,<111>,0.37654403,0.28786998 -6,S2,432,Cubic_High m-3m,<111>,0.84817392,-0.46580681 -6,S2,432,Cubic_High m-3m,<111>,0.84817392,-0.46580681 -6,S2,23,Cubic_Low m-3,<001>,-0.71285088,-0.31878850 -6,S2,23,Cubic_Low m-3,<001>,-0.71285088,-0.31878850 -6,S2,23,Cubic_Low m-3,<001>,-0.14878083,0.54202863 -6,S2,23,Cubic_Low m-3,<001>,-0.14878083,0.54202863 -6,S2,23,Cubic_Low m-3,<001>,0.22294991,-0.22294991 -6,S2,23,Cubic_Low m-3,<001>,0.22294991,-0.22294991 -6,S2,23,Cubic_Low m-3,<011>,-0.51081767,0.19652653 -6,S2,23,Cubic_Low m-3,<011>,-0.51081767,0.19652653 -6,S2,23,Cubic_Low m-3,<011>,-0.19390695,-0.32379584 -6,S2,23,Cubic_Low m-3,<011>,-0.19390695,-0.32379584 -6,S2,23,Cubic_Low m-3,<011>,0.06518126,0.15190139 -6,S2,23,Cubic_Low m-3,<011>,0.06518126,0.15190139 -6,S2,23,Cubic_Low m-3,<011>,0.36865582,-0.71745210 -6,S2,23,Cubic_Low m-3,<011>,0.36865582,-0.71745210 -6,S2,23,Cubic_Low m-3,<011>,0.38987231,0.72110759 -6,S2,23,Cubic_Low m-3,<011>,0.38987231,0.72110759 -6,S2,23,Cubic_Low m-3,<011>,0.64854511,-0.00477946 -6,S2,23,Cubic_Low m-3,<011>,0.64854511,-0.00477946 -6,S2,23,Cubic_Low m-3,<111>,-0.21312918,0.00668525 -6,S2,23,Cubic_Low m-3,<111>,-0.21312918,0.00668525 -6,S2,23,Cubic_Low m-3,<111>,-0.11168515,-0.71486516 -6,S2,23,Cubic_Low m-3,<111>,-0.11168515,-0.71486516 -6,S2,23,Cubic_Low m-3,<111>,0.37654403,0.28786998 -6,S2,23,Cubic_Low m-3,<111>,0.37654403,0.28786998 -6,S2,23,Cubic_Low m-3,<111>,0.84817392,-0.46580681 -6,S2,23,Cubic_Low m-3,<111>,0.84817392,-0.46580681 -6,S2,622,Hexagonal_High 6/mmm,<0001>,0.22294991,-0.22294991 -6,S2,622,Hexagonal_High 6/mmm,<0001>,0.22294991,-0.22294991 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,-0.59873985,0.04687292 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,-0.59873985,0.04687292 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,-0.14878083,0.54202863 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,-0.14878083,0.54202863 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,0.62279896,0.71895801 -6,S2,622,Hexagonal_High 6/mmm,<10-10>,0.62279896,0.71895801 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,-0.71285088,-0.31878850 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,-0.71285088,-0.31878850 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,-0.40642406,0.32798615 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,-0.40642406,0.32798615 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,0.18585277,0.68582873 -6,S2,622,Hexagonal_High 6/mmm,<11-20>,0.18585277,0.68582873 -6,S2,6,Hexagonal_Low 6/m,<0001>,0.22294991,-0.22294991 -6,S2,6,Hexagonal_Low 6/m,<0001>,0.22294991,-0.22294991 -6,S2,6,Hexagonal_Low 6/m,<10-10>,-0.59873985,0.04687292 -6,S2,6,Hexagonal_Low 6/m,<10-10>,-0.59873985,0.04687292 -6,S2,6,Hexagonal_Low 6/m,<10-10>,-0.14878083,0.54202863 -6,S2,6,Hexagonal_Low 6/m,<10-10>,-0.14878083,0.54202863 -6,S2,6,Hexagonal_Low 6/m,<10-10>,0.62279896,0.71895801 -6,S2,6,Hexagonal_Low 6/m,<10-10>,0.62279896,0.71895801 -6,S2,6,Hexagonal_Low 6/m,<11-20>,-0.71285088,-0.31878850 -6,S2,6,Hexagonal_Low 6/m,<11-20>,-0.71285088,-0.31878850 -6,S2,6,Hexagonal_Low 6/m,<11-20>,-0.40642406,0.32798615 -6,S2,6,Hexagonal_Low 6/m,<11-20>,-0.40642406,0.32798615 -6,S2,6,Hexagonal_Low 6/m,<11-20>,0.18585277,0.68582873 -6,S2,6,Hexagonal_Low 6/m,<11-20>,0.18585277,0.68582873 -6,S2,32,Trigonal_High -3m,<0001>,0.22294991,-0.22294991 -6,S2,32,Trigonal_High -3m,<0001>,0.22294991,-0.22294991 -6,S2,32,Trigonal_High -3m,<0-110>,-0.59873985,0.04687292 -6,S2,32,Trigonal_High -3m,<0-110>,-0.59873985,0.04687292 -6,S2,32,Trigonal_High -3m,<0-110>,-0.14878083,0.54202863 -6,S2,32,Trigonal_High -3m,<0-110>,-0.14878083,0.54202863 -6,S2,32,Trigonal_High -3m,<0-110>,0.62279896,0.71895801 -6,S2,32,Trigonal_High -3m,<0-110>,0.62279896,0.71895801 -6,S2,32,Trigonal_High -3m,<1-100>,-0.59873985,0.04687292 -6,S2,32,Trigonal_High -3m,<1-100>,-0.59873985,0.04687292 -6,S2,32,Trigonal_High -3m,<1-100>,-0.14878083,0.54202863 -6,S2,32,Trigonal_High -3m,<1-100>,-0.14878083,0.54202863 -6,S2,32,Trigonal_High -3m,<1-100>,0.62279896,0.71895801 -6,S2,32,Trigonal_High -3m,<1-100>,0.62279896,0.71895801 -6,S2,3,Trigonal_Low -3,<0001>,0.22294991,-0.22294991 -6,S2,3,Trigonal_Low -3,<0001>,0.22294991,-0.22294991 -6,S2,3,Trigonal_Low -3,<-1-120>,-0.71285088,-0.31878850 -6,S2,3,Trigonal_Low -3,<-1-120>,-0.71285088,-0.31878850 -6,S2,3,Trigonal_Low -3,<-1-120>,-0.40642406,0.32798615 -6,S2,3,Trigonal_Low -3,<-1-120>,-0.40642406,0.32798615 -6,S2,3,Trigonal_Low -3,<-1-120>,0.18585277,0.68582873 -6,S2,3,Trigonal_Low -3,<-1-120>,0.18585277,0.68582873 -6,S2,3,Trigonal_Low -3,<2-1-10>,-0.71285088,-0.31878850 -6,S2,3,Trigonal_Low -3,<2-1-10>,-0.71285088,-0.31878850 -6,S2,3,Trigonal_Low -3,<2-1-10>,-0.40642406,0.32798615 -6,S2,3,Trigonal_Low -3,<2-1-10>,-0.40642406,0.32798615 -6,S2,3,Trigonal_Low -3,<2-1-10>,0.18585277,0.68582873 -6,S2,3,Trigonal_Low -3,<2-1-10>,0.18585277,0.68582873 -6,S2,422,Tetragonal_High 4/mmm,<001>,0.22294991,-0.22294991 -6,S2,422,Tetragonal_High 4/mmm,<001>,0.22294991,-0.22294991 -6,S2,422,Tetragonal_High 4/mmm,<100>,-0.71285088,-0.31878850 -6,S2,422,Tetragonal_High 4/mmm,<100>,-0.71285088,-0.31878850 -6,S2,422,Tetragonal_High 4/mmm,<100>,-0.14878083,0.54202863 -6,S2,422,Tetragonal_High 4/mmm,<100>,-0.14878083,0.54202863 -6,S2,422,Tetragonal_High 4/mmm,<110>,-0.51081767,0.19652653 -6,S2,422,Tetragonal_High 4/mmm,<110>,-0.51081767,0.19652653 -6,S2,422,Tetragonal_High 4/mmm,<110>,0.38987231,0.72110759 -6,S2,422,Tetragonal_High 4/mmm,<110>,0.38987231,0.72110759 -6,S2,4,Tetragonal_Low 4/m,<001>,0.22294991,-0.22294991 -6,S2,4,Tetragonal_Low 4/m,<001>,0.22294991,-0.22294991 -6,S2,4,Tetragonal_Low 4/m,<100>,-0.71285088,-0.31878850 -6,S2,4,Tetragonal_Low 4/m,<100>,-0.71285088,-0.31878850 -6,S2,4,Tetragonal_Low 4/m,<100>,-0.14878083,0.54202863 -6,S2,4,Tetragonal_Low 4/m,<100>,-0.14878083,0.54202863 -6,S2,4,Tetragonal_Low 4/m,<110>,-0.51081767,0.19652653 -6,S2,4,Tetragonal_Low 4/m,<110>,-0.51081767,0.19652653 -6,S2,4,Tetragonal_Low 4/m,<110>,0.38987231,0.72110759 -6,S2,4,Tetragonal_Low 4/m,<110>,0.38987231,0.72110759 -6,S2,222,OrthoRhombic mmm,<001>,0.22294991,-0.22294991 -6,S2,222,OrthoRhombic mmm,<001>,0.22294991,-0.22294991 -6,S2,222,OrthoRhombic mmm,<100>,-0.14878083,0.54202863 -6,S2,222,OrthoRhombic mmm,<100>,-0.14878083,0.54202863 -6,S2,222,OrthoRhombic mmm,<010>,-0.71285088,-0.31878850 -6,S2,222,OrthoRhombic mmm,<010>,-0.71285088,-0.31878850 -6,S2,2,Monoclinic 2/m,<001>,0.22294991,-0.22294991 -6,S2,2,Monoclinic 2/m,<001>,0.22294991,-0.22294991 -6,S2,2,Monoclinic 2/m,<100>,-0.14878083,0.54202863 -6,S2,2,Monoclinic 2/m,<100>,-0.14878083,0.54202863 -6,S2,2,Monoclinic 2/m,<010>,-0.71285088,-0.31878850 -6,S2,2,Monoclinic 2/m,<010>,-0.71285088,-0.31878850 -6,S2,1,Triclinic -1,<001>,0.22294991,-0.22294991 -6,S2,1,Triclinic -1,<001>,0.22294991,-0.22294991 -6,S2,1,Triclinic -1,<100>,-0.14878083,0.54202863 -6,S2,1,Triclinic -1,<100>,-0.14878083,0.54202863 -6,S2,1,Triclinic -1,<010>,-0.71285088,-0.31878850 -6,S2,1,Triclinic -1,<010>,-0.71285088,-0.31878850 -7,R,432,Cubic_High m-3m,<001>,-0.23170848,-0.11285166 -7,R,432,Cubic_High m-3m,<001>,-0.23170848,-0.11285166 -7,R,432,Cubic_High m-3m,<001>,0.30551848,0.57174576 -7,R,432,Cubic_High m-3m,<001>,0.30551848,0.57174576 -7,R,432,Cubic_High m-3m,<001>,0.62855747,-0.44012068 -7,R,432,Cubic_High m-3m,<001>,0.62855747,-0.44012068 -7,R,432,Cubic_High m-3m,<011>,-0.60359455,0.16859556 -7,R,432,Cubic_High m-3m,<011>,-0.60359455,0.16859556 -7,R,432,Cubic_High m-3m,<011>,-0.45964639,-0.54043574 -7,R,432,Cubic_High m-3m,<011>,-0.45964639,-0.54043574 -7,R,432,Cubic_High m-3m,<011>,-0.23087789,0.86925308 -7,R,432,Cubic_High m-3m,<011>,-0.23087789,0.86925308 -7,R,432,Cubic_High m-3m,<011>,-0.00159962,0.21998851 -7,R,432,Cubic_High m-3m,<011>,-0.00159962,0.21998851 -7,R,432,Cubic_High m-3m,<011>,0.13996224,-0.30044719 -7,R,432,Cubic_High m-3m,<011>,0.13996224,-0.30044719 -7,R,432,Cubic_High m-3m,<011>,0.58689557,0.12065358 -7,R,432,Cubic_High m-3m,<011>,0.58689557,0.12065358 -7,R,432,Cubic_High m-3m,<111>,-0.85342957,-0.23847956 -7,R,432,Cubic_High m-3m,<111>,-0.85342957,-0.23847956 -7,R,432,Cubic_High m-3m,<111>,-0.28857146,0.41624290 -7,R,432,Cubic_High m-3m,<111>,-0.28857146,0.41624290 -7,R,432,Cubic_High m-3m,<111>,-0.02992118,-0.63904393 -7,R,432,Cubic_High m-3m,<111>,-0.02992118,-0.63904393 -7,R,432,Cubic_High m-3m,<111>,0.24031798,0.01205228 -7,R,432,Cubic_High m-3m,<111>,0.24031798,0.01205228 -7,R,23,Cubic_Low m-3,<001>,-0.23170848,-0.11285166 -7,R,23,Cubic_Low m-3,<001>,-0.23170848,-0.11285166 -7,R,23,Cubic_Low m-3,<001>,0.30551848,0.57174576 -7,R,23,Cubic_Low m-3,<001>,0.30551848,0.57174576 -7,R,23,Cubic_Low m-3,<001>,0.62855747,-0.44012068 -7,R,23,Cubic_Low m-3,<001>,0.62855747,-0.44012068 -7,R,23,Cubic_Low m-3,<011>,-0.60359455,0.16859556 -7,R,23,Cubic_Low m-3,<011>,-0.60359455,0.16859556 -7,R,23,Cubic_Low m-3,<011>,-0.45964639,-0.54043574 -7,R,23,Cubic_Low m-3,<011>,-0.45964639,-0.54043574 -7,R,23,Cubic_Low m-3,<011>,-0.23087789,0.86925308 -7,R,23,Cubic_Low m-3,<011>,-0.23087789,0.86925308 -7,R,23,Cubic_Low m-3,<011>,-0.00159962,0.21998851 -7,R,23,Cubic_Low m-3,<011>,-0.00159962,0.21998851 -7,R,23,Cubic_Low m-3,<011>,0.13996224,-0.30044719 -7,R,23,Cubic_Low m-3,<011>,0.13996224,-0.30044719 -7,R,23,Cubic_Low m-3,<011>,0.58689557,0.12065358 -7,R,23,Cubic_Low m-3,<011>,0.58689557,0.12065358 -7,R,23,Cubic_Low m-3,<111>,-0.85342957,-0.23847956 -7,R,23,Cubic_Low m-3,<111>,-0.85342957,-0.23847956 -7,R,23,Cubic_Low m-3,<111>,-0.28857146,0.41624290 -7,R,23,Cubic_Low m-3,<111>,-0.28857146,0.41624290 -7,R,23,Cubic_Low m-3,<111>,-0.02992118,-0.63904393 -7,R,23,Cubic_Low m-3,<111>,-0.02992118,-0.63904393 -7,R,23,Cubic_Low m-3,<111>,0.24031798,0.01205228 -7,R,23,Cubic_Low m-3,<111>,0.24031798,0.01205228 -7,R,622,Hexagonal_High 6/mmm,<0001>,0.62855747,-0.44012068 -7,R,622,Hexagonal_High 6/mmm,<0001>,0.62855747,-0.44012068 -7,R,622,Hexagonal_High 6/mmm,<10-10>,-0.38059150,-0.37699423 -7,R,622,Hexagonal_High 6/mmm,<10-10>,-0.38059150,-0.37699423 -7,R,622,Hexagonal_High 6/mmm,<10-10>,-0.08215818,0.11174997 -7,R,622,Hexagonal_High 6/mmm,<10-10>,-0.08215818,0.11174997 -7,R,622,Hexagonal_High 6/mmm,<10-10>,0.30551848,0.57174576 -7,R,622,Hexagonal_High 6/mmm,<10-10>,0.30551848,0.57174576 -7,R,622,Hexagonal_High 6/mmm,<11-20>,-0.54406891,-0.74073678 -7,R,622,Hexagonal_High 6/mmm,<11-20>,-0.54406891,-0.74073678 -7,R,622,Hexagonal_High 6/mmm,<11-20>,-0.23170848,-0.11285166 -7,R,622,Hexagonal_High 6/mmm,<11-20>,-0.23170848,-0.11285166 -7,R,622,Hexagonal_High 6/mmm,<11-20>,0.08671073,0.33019107 -7,R,622,Hexagonal_High 6/mmm,<11-20>,0.08671073,0.33019107 -7,R,6,Hexagonal_Low 6/m,<0001>,0.62855747,-0.44012068 -7,R,6,Hexagonal_Low 6/m,<0001>,0.62855747,-0.44012068 -7,R,6,Hexagonal_Low 6/m,<10-10>,-0.38059150,-0.37699423 -7,R,6,Hexagonal_Low 6/m,<10-10>,-0.38059150,-0.37699423 -7,R,6,Hexagonal_Low 6/m,<10-10>,-0.08215818,0.11174997 -7,R,6,Hexagonal_Low 6/m,<10-10>,-0.08215818,0.11174997 -7,R,6,Hexagonal_Low 6/m,<10-10>,0.30551848,0.57174576 -7,R,6,Hexagonal_Low 6/m,<10-10>,0.30551848,0.57174576 -7,R,6,Hexagonal_Low 6/m,<11-20>,-0.54406891,-0.74073678 -7,R,6,Hexagonal_Low 6/m,<11-20>,-0.54406891,-0.74073678 -7,R,6,Hexagonal_Low 6/m,<11-20>,-0.23170848,-0.11285166 -7,R,6,Hexagonal_Low 6/m,<11-20>,-0.23170848,-0.11285166 -7,R,6,Hexagonal_Low 6/m,<11-20>,0.08671073,0.33019107 -7,R,6,Hexagonal_Low 6/m,<11-20>,0.08671073,0.33019107 -7,R,32,Trigonal_High -3m,<0001>,0.62855747,-0.44012068 -7,R,32,Trigonal_High -3m,<0001>,0.62855747,-0.44012068 -7,R,32,Trigonal_High -3m,<0-110>,-0.38059150,-0.37699423 -7,R,32,Trigonal_High -3m,<0-110>,-0.38059150,-0.37699423 -7,R,32,Trigonal_High -3m,<0-110>,-0.08215818,0.11174997 -7,R,32,Trigonal_High -3m,<0-110>,-0.08215818,0.11174997 -7,R,32,Trigonal_High -3m,<0-110>,0.30551848,0.57174576 -7,R,32,Trigonal_High -3m,<0-110>,0.30551848,0.57174576 -7,R,32,Trigonal_High -3m,<1-100>,-0.38059150,-0.37699423 -7,R,32,Trigonal_High -3m,<1-100>,-0.38059150,-0.37699423 -7,R,32,Trigonal_High -3m,<1-100>,-0.08215818,0.11174997 -7,R,32,Trigonal_High -3m,<1-100>,-0.08215818,0.11174997 -7,R,32,Trigonal_High -3m,<1-100>,0.30551848,0.57174576 -7,R,32,Trigonal_High -3m,<1-100>,0.30551848,0.57174576 -7,R,3,Trigonal_Low -3,<0001>,0.62855747,-0.44012068 -7,R,3,Trigonal_Low -3,<0001>,0.62855747,-0.44012068 -7,R,3,Trigonal_Low -3,<-1-120>,-0.54406891,-0.74073678 -7,R,3,Trigonal_Low -3,<-1-120>,-0.54406891,-0.74073678 -7,R,3,Trigonal_Low -3,<-1-120>,-0.23170848,-0.11285166 -7,R,3,Trigonal_Low -3,<-1-120>,-0.23170848,-0.11285166 -7,R,3,Trigonal_Low -3,<-1-120>,0.08671073,0.33019107 -7,R,3,Trigonal_Low -3,<-1-120>,0.08671073,0.33019107 -7,R,3,Trigonal_Low -3,<2-1-10>,-0.54406891,-0.74073678 -7,R,3,Trigonal_Low -3,<2-1-10>,-0.54406891,-0.74073678 -7,R,3,Trigonal_Low -3,<2-1-10>,-0.23170848,-0.11285166 -7,R,3,Trigonal_Low -3,<2-1-10>,-0.23170848,-0.11285166 -7,R,3,Trigonal_Low -3,<2-1-10>,0.08671073,0.33019107 -7,R,3,Trigonal_Low -3,<2-1-10>,0.08671073,0.33019107 -7,R,422,Tetragonal_High 4/mmm,<001>,0.62855747,-0.44012068 -7,R,422,Tetragonal_High 4/mmm,<001>,0.62855747,-0.44012068 -7,R,422,Tetragonal_High 4/mmm,<100>,-0.23170848,-0.11285166 -7,R,422,Tetragonal_High 4/mmm,<100>,-0.23170848,-0.11285166 -7,R,422,Tetragonal_High 4/mmm,<100>,0.30551848,0.57174576 -7,R,422,Tetragonal_High 4/mmm,<100>,0.30551848,0.57174576 -7,R,422,Tetragonal_High 4/mmm,<110>,-0.45964639,-0.54043574 -7,R,422,Tetragonal_High 4/mmm,<110>,-0.45964639,-0.54043574 -7,R,422,Tetragonal_High 4/mmm,<110>,-0.00159962,0.21998851 -7,R,422,Tetragonal_High 4/mmm,<110>,-0.00159962,0.21998851 -7,R,4,Tetragonal_Low 4/m,<001>,0.62855747,-0.44012068 -7,R,4,Tetragonal_Low 4/m,<001>,0.62855747,-0.44012068 -7,R,4,Tetragonal_Low 4/m,<100>,-0.23170848,-0.11285166 -7,R,4,Tetragonal_Low 4/m,<100>,-0.23170848,-0.11285166 -7,R,4,Tetragonal_Low 4/m,<100>,0.30551848,0.57174576 -7,R,4,Tetragonal_Low 4/m,<100>,0.30551848,0.57174576 -7,R,4,Tetragonal_Low 4/m,<110>,-0.45964639,-0.54043574 -7,R,4,Tetragonal_Low 4/m,<110>,-0.45964639,-0.54043574 -7,R,4,Tetragonal_Low 4/m,<110>,-0.00159962,0.21998851 -7,R,4,Tetragonal_Low 4/m,<110>,-0.00159962,0.21998851 -7,R,222,OrthoRhombic mmm,<001>,0.62855747,-0.44012068 -7,R,222,OrthoRhombic mmm,<001>,0.62855747,-0.44012068 -7,R,222,OrthoRhombic mmm,<100>,0.30551848,0.57174576 -7,R,222,OrthoRhombic mmm,<100>,0.30551848,0.57174576 -7,R,222,OrthoRhombic mmm,<010>,-0.23170848,-0.11285166 -7,R,222,OrthoRhombic mmm,<010>,-0.23170848,-0.11285166 -7,R,2,Monoclinic 2/m,<001>,0.62855747,-0.44012068 -7,R,2,Monoclinic 2/m,<001>,0.62855747,-0.44012068 -7,R,2,Monoclinic 2/m,<100>,0.30551848,0.57174576 -7,R,2,Monoclinic 2/m,<100>,0.30551848,0.57174576 -7,R,2,Monoclinic 2/m,<010>,-0.23170848,-0.11285166 -7,R,2,Monoclinic 2/m,<010>,-0.23170848,-0.11285166 -7,R,1,Triclinic -1,<001>,0.62855747,-0.44012068 -7,R,1,Triclinic -1,<001>,0.62855747,-0.44012068 -7,R,1,Triclinic -1,<100>,0.30551848,0.57174576 -7,R,1,Triclinic -1,<100>,0.30551848,0.57174576 -7,R,1,Triclinic -1,<010>,-0.23170848,-0.11285166 -7,R,1,Triclinic -1,<010>,-0.23170848,-0.11285166 -8,RC_rd1,432,Cubic_High m-3m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,432,Cubic_High m-3m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,432,Cubic_High m-3m,<001>,0.00000000,0.70020754 -8,RC_rd1,432,Cubic_High m-3m,<001>,0.00000000,0.70020754 -8,RC_rd1,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -8,RC_rd1,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.56940030,0.53506126 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.56940030,0.53506126 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.42482577,-0.14529897 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.42482577,-0.14529897 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.00000000,-0.63707026 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.00000000,-0.63707026 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.00000000,0.22169466 -8,RC_rd1,432,Cubic_High m-3m,<011>,-0.00000000,0.22169466 -8,RC_rd1,432,Cubic_High m-3m,<011>,0.42482577,-0.14529897 -8,RC_rd1,432,Cubic_High m-3m,<011>,0.42482577,-0.14529897 -8,RC_rd1,432,Cubic_High m-3m,<011>,0.56940030,0.53506126 -8,RC_rd1,432,Cubic_High m-3m,<011>,0.56940030,0.53506126 -8,RC_rd1,432,Cubic_High m-3m,<111>,-0.42923553,-0.55015665 -8,RC_rd1,432,Cubic_High m-3m,<111>,-0.42923553,-0.55015665 -8,RC_rd1,432,Cubic_High m-3m,<111>,-0.33181103,0.19831432 -8,RC_rd1,432,Cubic_High m-3m,<111>,-0.33181103,0.19831432 -8,RC_rd1,432,Cubic_High m-3m,<111>,0.33181103,0.19831432 -8,RC_rd1,432,Cubic_High m-3m,<111>,0.33181103,0.19831432 -8,RC_rd1,432,Cubic_High m-3m,<111>,0.42923553,-0.55015665 -8,RC_rd1,432,Cubic_High m-3m,<111>,0.42923553,-0.55015665 -8,RC_rd1,23,Cubic_Low m-3,<001>,-0.00000000,-0.17632698 -8,RC_rd1,23,Cubic_Low m-3,<001>,-0.00000000,-0.17632698 -8,RC_rd1,23,Cubic_Low m-3,<001>,0.00000000,0.70020754 -8,RC_rd1,23,Cubic_Low m-3,<001>,0.00000000,0.70020754 -8,RC_rd1,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -8,RC_rd1,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.56940030,0.53506126 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.56940030,0.53506126 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.42482577,-0.14529897 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.42482577,-0.14529897 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.00000000,-0.63707026 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.00000000,-0.63707026 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.00000000,0.22169466 -8,RC_rd1,23,Cubic_Low m-3,<011>,-0.00000000,0.22169466 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.42482577,-0.14529897 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.42482577,-0.14529897 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.56940030,0.53506126 -8,RC_rd1,23,Cubic_Low m-3,<011>,0.56940030,0.53506126 -8,RC_rd1,23,Cubic_Low m-3,<111>,-0.42923553,-0.55015665 -8,RC_rd1,23,Cubic_Low m-3,<111>,-0.42923553,-0.55015665 -8,RC_rd1,23,Cubic_Low m-3,<111>,-0.33181103,0.19831432 -8,RC_rd1,23,Cubic_Low m-3,<111>,-0.33181103,0.19831432 -8,RC_rd1,23,Cubic_Low m-3,<111>,0.33181103,0.19831432 -8,RC_rd1,23,Cubic_Low m-3,<111>,0.33181103,0.19831432 -8,RC_rd1,23,Cubic_Low m-3,<111>,0.42923553,-0.55015665 -8,RC_rd1,23,Cubic_Low m-3,<111>,0.42923553,-0.55015665 -8,RC_rd1,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,-0.38574350,0.62783433 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,-0.38574350,0.62783433 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,0.38574350,0.62783433 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,0.38574350,0.62783433 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -8,RC_rd1,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,-0.73955419,0.40123166 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,-0.73955419,0.40123166 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.70020754 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.70020754 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,0.73955419,0.40123166 -8,RC_rd1,622,Hexagonal_High 6/mmm,<11-20>,0.73955419,0.40123166 -8,RC_rd1,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,-0.38574350,0.62783433 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,-0.38574350,0.62783433 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,0.38574350,0.62783433 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,0.38574350,0.62783433 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -8,RC_rd1,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,-0.73955419,0.40123166 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,-0.73955419,0.40123166 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.70020754 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.70020754 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,0.73955419,0.40123166 -8,RC_rd1,6,Hexagonal_Low 6/m,<11-20>,0.73955419,0.40123166 -8,RC_rd1,32,Trigonal_High -3m,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,32,Trigonal_High -3m,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,-0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,-0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -8,RC_rd1,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,-0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,-0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,0.38574350,0.62783433 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -8,RC_rd1,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -8,RC_rd1,3,Trigonal_Low -3,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,3,Trigonal_Low -3,<0001>,-0.00000000,-0.17632698 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,-0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,-0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,0.00000000,0.70020754 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,0.00000000,0.70020754 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<-1-120>,0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,-0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,-0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,0.00000000,0.70020754 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,0.00000000,0.70020754 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,0.73955419,0.40123166 -8,RC_rd1,3,Trigonal_Low -3,<2-1-10>,0.73955419,0.40123166 -8,RC_rd1,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.17632698 -8,RC_rd1,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.17632698 -8,RC_rd1,422,Tetragonal_High 4/mmm,<100>,0.00000000,0.70020754 -8,RC_rd1,422,Tetragonal_High 4/mmm,<100>,0.00000000,0.70020754 -8,RC_rd1,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -8,RC_rd1,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -8,RC_rd1,422,Tetragonal_High 4/mmm,<110>,-0.56940030,0.53506126 -8,RC_rd1,422,Tetragonal_High 4/mmm,<110>,-0.56940030,0.53506126 -8,RC_rd1,422,Tetragonal_High 4/mmm,<110>,0.56940030,0.53506126 -8,RC_rd1,422,Tetragonal_High 4/mmm,<110>,0.56940030,0.53506126 -8,RC_rd1,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,4,Tetragonal_Low 4/m,<100>,0.00000000,0.70020754 -8,RC_rd1,4,Tetragonal_Low 4/m,<100>,0.00000000,0.70020754 -8,RC_rd1,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -8,RC_rd1,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -8,RC_rd1,4,Tetragonal_Low 4/m,<110>,-0.56940030,0.53506126 -8,RC_rd1,4,Tetragonal_Low 4/m,<110>,-0.56940030,0.53506126 -8,RC_rd1,4,Tetragonal_Low 4/m,<110>,0.56940030,0.53506126 -8,RC_rd1,4,Tetragonal_Low 4/m,<110>,0.56940030,0.53506126 -8,RC_rd1,222,OrthoRhombic mmm,<001>,-0.00000000,-0.17632698 -8,RC_rd1,222,OrthoRhombic mmm,<001>,-0.00000000,-0.17632698 -8,RC_rd1,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -8,RC_rd1,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -8,RC_rd1,222,OrthoRhombic mmm,<010>,-0.00000000,0.70020754 -8,RC_rd1,222,OrthoRhombic mmm,<010>,-0.00000000,0.70020754 -8,RC_rd1,2,Monoclinic 2/m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,2,Monoclinic 2/m,<001>,-0.00000000,-0.17632698 -8,RC_rd1,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -8,RC_rd1,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -8,RC_rd1,2,Monoclinic 2/m,<010>,-0.00000000,0.70020754 -8,RC_rd1,2,Monoclinic 2/m,<010>,-0.00000000,0.70020754 -8,RC_rd1,1,Triclinic -1,<001>,-0.00000000,-0.17632698 -8,RC_rd1,1,Triclinic -1,<001>,-0.00000000,-0.17632698 -8,RC_rd1,1,Triclinic -1,<100>,1.00000000,0.00000000 -8,RC_rd1,1,Triclinic -1,<100>,1.00000000,0.00000000 -8,RC_rd1,1,Triclinic -1,<010>,-0.00000000,0.70020754 -8,RC_rd1,1,Triclinic -1,<010>,-0.00000000,0.70020754 -9,RC_rd2,432,Cubic_High m-3m,<001>,0.00000000,-0.31529879 -9,RC_rd2,432,Cubic_High m-3m,<001>,0.00000000,-0.31529879 -9,RC_rd2,432,Cubic_High m-3m,<001>,-0.00000000,0.52056705 -9,RC_rd2,432,Cubic_High m-3m,<001>,-0.00000000,0.52056705 -9,RC_rd2,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -9,RC_rd2,432,Cubic_High m-3m,<001>,1.00000000,0.00000000 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.50307125,0.41209184 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.50307125,0.41209184 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.44775472,-0.25682156 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.44775472,-0.25682156 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.00000000,-0.83909963 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.00000000,-0.83909963 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.00000000,0.08748866 -9,RC_rd2,432,Cubic_High m-3m,<011>,-0.00000000,0.08748866 -9,RC_rd2,432,Cubic_High m-3m,<011>,0.44775472,-0.25682156 -9,RC_rd2,432,Cubic_High m-3m,<011>,0.44775472,-0.25682156 -9,RC_rd2,432,Cubic_High m-3m,<011>,0.50307125,0.41209184 -9,RC_rd2,432,Cubic_High m-3m,<011>,0.50307125,0.41209184 -9,RC_rd2,432,Cubic_High m-3m,<111>,-0.50565668,-0.70424245 -9,RC_rd2,432,Cubic_High m-3m,<111>,-0.50565668,-0.70424245 -9,RC_rd2,432,Cubic_High m-3m,<111>,-0.32002260,0.07858975 -9,RC_rd2,432,Cubic_High m-3m,<111>,-0.32002260,0.07858975 -9,RC_rd2,432,Cubic_High m-3m,<111>,0.32002260,0.07858975 -9,RC_rd2,432,Cubic_High m-3m,<111>,0.32002260,0.07858975 -9,RC_rd2,432,Cubic_High m-3m,<111>,0.50565668,-0.70424245 -9,RC_rd2,432,Cubic_High m-3m,<111>,0.50565668,-0.70424245 -9,RC_rd2,23,Cubic_Low m-3,<001>,0.00000000,-0.31529879 -9,RC_rd2,23,Cubic_Low m-3,<001>,0.00000000,-0.31529879 -9,RC_rd2,23,Cubic_Low m-3,<001>,-0.00000000,0.52056705 -9,RC_rd2,23,Cubic_Low m-3,<001>,-0.00000000,0.52056705 -9,RC_rd2,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -9,RC_rd2,23,Cubic_Low m-3,<001>,1.00000000,0.00000000 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.50307125,0.41209184 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.50307125,0.41209184 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.44775472,-0.25682156 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.44775472,-0.25682156 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.00000000,-0.83909963 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.00000000,-0.83909963 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.00000000,0.08748866 -9,RC_rd2,23,Cubic_Low m-3,<011>,-0.00000000,0.08748866 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.44775472,-0.25682156 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.44775472,-0.25682156 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.50307125,0.41209184 -9,RC_rd2,23,Cubic_Low m-3,<011>,0.50307125,0.41209184 -9,RC_rd2,23,Cubic_Low m-3,<111>,-0.50565668,-0.70424245 -9,RC_rd2,23,Cubic_Low m-3,<111>,-0.50565668,-0.70424245 -9,RC_rd2,23,Cubic_Low m-3,<111>,-0.32002260,0.07858975 -9,RC_rd2,23,Cubic_Low m-3,<111>,-0.32002260,0.07858975 -9,RC_rd2,23,Cubic_Low m-3,<111>,0.32002260,0.07858975 -9,RC_rd2,23,Cubic_Low m-3,<111>,0.32002260,0.07858975 -9,RC_rd2,23,Cubic_Low m-3,<111>,0.50565668,-0.70424245 -9,RC_rd2,23,Cubic_Low m-3,<111>,0.50565668,-0.70424245 -9,RC_rd2,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,-0.33406119,0.47397035 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,-0.33406119,0.47397035 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,0.33406119,0.47397035 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,0.33406119,0.47397035 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -9,RC_rd2,622,Hexagonal_High 6/mmm,<10-10>,1.00000000,0.00000000 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,-0.67301316,0.31829326 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,-0.67301316,0.31829326 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.52056705 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,-0.00000000,0.52056705 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,0.67301316,0.31829326 -9,RC_rd2,622,Hexagonal_High 6/mmm,<11-20>,0.67301316,0.31829326 -9,RC_rd2,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,-0.33406119,0.47397035 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,-0.33406119,0.47397035 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,0.33406119,0.47397035 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,0.33406119,0.47397035 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -9,RC_rd2,6,Hexagonal_Low 6/m,<10-10>,1.00000000,0.00000000 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,-0.67301316,0.31829326 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,-0.67301316,0.31829326 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.52056705 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,-0.00000000,0.52056705 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,0.67301316,0.31829326 -9,RC_rd2,6,Hexagonal_Low 6/m,<11-20>,0.67301316,0.31829326 -9,RC_rd2,32,Trigonal_High -3m,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,32,Trigonal_High -3m,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,-0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,-0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -9,RC_rd2,32,Trigonal_High -3m,<0-110>,1.00000000,0.00000000 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,-0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,-0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,0.33406119,0.47397035 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -9,RC_rd2,32,Trigonal_High -3m,<1-100>,1.00000000,0.00000000 -9,RC_rd2,3,Trigonal_Low -3,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,3,Trigonal_Low -3,<0001>,-0.00000000,-0.31529879 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,-0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,-0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,-0.00000000,0.52056705 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,-0.00000000,0.52056705 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<-1-120>,0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,-0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,-0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,-0.00000000,0.52056705 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,-0.00000000,0.52056705 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,0.67301316,0.31829326 -9,RC_rd2,3,Trigonal_Low -3,<2-1-10>,0.67301316,0.31829326 -9,RC_rd2,422,Tetragonal_High 4/mmm,<001>,0.00000000,-0.31529879 -9,RC_rd2,422,Tetragonal_High 4/mmm,<001>,0.00000000,-0.31529879 -9,RC_rd2,422,Tetragonal_High 4/mmm,<100>,-0.00000000,0.52056705 -9,RC_rd2,422,Tetragonal_High 4/mmm,<100>,-0.00000000,0.52056705 -9,RC_rd2,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -9,RC_rd2,422,Tetragonal_High 4/mmm,<100>,1.00000000,0.00000000 -9,RC_rd2,422,Tetragonal_High 4/mmm,<110>,-0.50307125,0.41209184 -9,RC_rd2,422,Tetragonal_High 4/mmm,<110>,-0.50307125,0.41209184 -9,RC_rd2,422,Tetragonal_High 4/mmm,<110>,0.50307125,0.41209184 -9,RC_rd2,422,Tetragonal_High 4/mmm,<110>,0.50307125,0.41209184 -9,RC_rd2,4,Tetragonal_Low 4/m,<001>,0.00000000,-0.31529879 -9,RC_rd2,4,Tetragonal_Low 4/m,<001>,0.00000000,-0.31529879 -9,RC_rd2,4,Tetragonal_Low 4/m,<100>,-0.00000000,0.52056705 -9,RC_rd2,4,Tetragonal_Low 4/m,<100>,-0.00000000,0.52056705 -9,RC_rd2,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -9,RC_rd2,4,Tetragonal_Low 4/m,<100>,1.00000000,0.00000000 -9,RC_rd2,4,Tetragonal_Low 4/m,<110>,-0.50307125,0.41209184 -9,RC_rd2,4,Tetragonal_Low 4/m,<110>,-0.50307125,0.41209184 -9,RC_rd2,4,Tetragonal_Low 4/m,<110>,0.50307125,0.41209184 -9,RC_rd2,4,Tetragonal_Low 4/m,<110>,0.50307125,0.41209184 -9,RC_rd2,222,OrthoRhombic mmm,<001>,0.00000000,-0.31529879 -9,RC_rd2,222,OrthoRhombic mmm,<001>,0.00000000,-0.31529879 -9,RC_rd2,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -9,RC_rd2,222,OrthoRhombic mmm,<100>,1.00000000,0.00000000 -9,RC_rd2,222,OrthoRhombic mmm,<010>,-0.00000000,0.52056705 -9,RC_rd2,222,OrthoRhombic mmm,<010>,-0.00000000,0.52056705 -9,RC_rd2,2,Monoclinic 2/m,<001>,0.00000000,-0.31529879 -9,RC_rd2,2,Monoclinic 2/m,<001>,0.00000000,-0.31529879 -9,RC_rd2,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -9,RC_rd2,2,Monoclinic 2/m,<100>,1.00000000,0.00000000 -9,RC_rd2,2,Monoclinic 2/m,<010>,-0.00000000,0.52056705 -9,RC_rd2,2,Monoclinic 2/m,<010>,-0.00000000,0.52056705 -9,RC_rd2,1,Triclinic -1,<001>,0.00000000,-0.31529879 -9,RC_rd2,1,Triclinic -1,<001>,0.00000000,-0.31529879 -9,RC_rd2,1,Triclinic -1,<100>,1.00000000,0.00000000 -9,RC_rd2,1,Triclinic -1,<100>,1.00000000,0.00000000 -9,RC_rd2,1,Triclinic -1,<010>,-0.00000000,0.52056705 -9,RC_rd2,1,Triclinic -1,<010>,-0.00000000,0.52056705 -10,RC_nd1,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,432,Cubic_High m-3m,<001>,0.34202014,-0.93969262 -10,RC_nd1,432,Cubic_High m-3m,<001>,0.34202014,-0.93969262 -10,RC_nd1,432,Cubic_High m-3m,<001>,0.93969262,0.34202014 -10,RC_nd1,432,Cubic_High m-3m,<001>,0.93969262,0.34202014 -10,RC_nd1,432,Cubic_High m-3m,<011>,-0.38923343,-0.14166938 -10,RC_nd1,432,Cubic_High m-3m,<011>,-0.38923343,-0.14166938 -10,RC_nd1,432,Cubic_High m-3m,<011>,-0.14166938,0.38923343 -10,RC_nd1,432,Cubic_High m-3m,<011>,-0.14166938,0.38923343 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.14166938,-0.38923343 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.14166938,-0.38923343 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.38923343,0.14166938 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.38923343,0.14166938 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.42261826,0.90630779 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.42261826,0.90630779 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.90630779,-0.42261826 -10,RC_nd1,432,Cubic_High m-3m,<011>,0.90630779,-0.42261826 -10,RC_nd1,432,Cubic_High m-3m,<111>,-0.46913943,0.21876331 -10,RC_nd1,432,Cubic_High m-3m,<111>,-0.46913943,0.21876331 -10,RC_nd1,432,Cubic_High m-3m,<111>,-0.21876331,-0.46913943 -10,RC_nd1,432,Cubic_High m-3m,<111>,-0.21876331,-0.46913943 -10,RC_nd1,432,Cubic_High m-3m,<111>,0.21876331,0.46913943 -10,RC_nd1,432,Cubic_High m-3m,<111>,0.21876331,0.46913943 -10,RC_nd1,432,Cubic_High m-3m,<111>,0.46913943,-0.21876331 -10,RC_nd1,432,Cubic_High m-3m,<111>,0.46913943,-0.21876331 -10,RC_nd1,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -10,RC_nd1,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -10,RC_nd1,23,Cubic_Low m-3,<001>,0.34202014,-0.93969262 -10,RC_nd1,23,Cubic_Low m-3,<001>,0.34202014,-0.93969262 -10,RC_nd1,23,Cubic_Low m-3,<001>,0.93969262,0.34202014 -10,RC_nd1,23,Cubic_Low m-3,<001>,0.93969262,0.34202014 -10,RC_nd1,23,Cubic_Low m-3,<011>,-0.38923343,-0.14166938 -10,RC_nd1,23,Cubic_Low m-3,<011>,-0.38923343,-0.14166938 -10,RC_nd1,23,Cubic_Low m-3,<011>,-0.14166938,0.38923343 -10,RC_nd1,23,Cubic_Low m-3,<011>,-0.14166938,0.38923343 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.14166938,-0.38923343 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.14166938,-0.38923343 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.38923343,0.14166938 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.38923343,0.14166938 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.42261826,0.90630779 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.42261826,0.90630779 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.90630779,-0.42261826 -10,RC_nd1,23,Cubic_Low m-3,<011>,0.90630779,-0.42261826 -10,RC_nd1,23,Cubic_Low m-3,<111>,-0.46913943,0.21876331 -10,RC_nd1,23,Cubic_Low m-3,<111>,-0.46913943,0.21876331 -10,RC_nd1,23,Cubic_Low m-3,<111>,-0.21876331,-0.46913943 -10,RC_nd1,23,Cubic_Low m-3,<111>,-0.21876331,-0.46913943 -10,RC_nd1,23,Cubic_Low m-3,<111>,0.21876331,0.46913943 -10,RC_nd1,23,Cubic_Low m-3,<111>,0.21876331,0.46913943 -10,RC_nd1,23,Cubic_Low m-3,<111>,0.46913943,-0.21876331 -10,RC_nd1,23,Cubic_Low m-3,<111>,0.46913943,-0.21876331 -10,RC_nd1,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,-0.93969262,-0.34202014 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,-0.17364818,-0.98480775 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,0.17364818,0.98480775 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,0.76604444,-0.64278761 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,0.76604444,-0.64278761 -10,RC_nd1,622,Hexagonal_High 6/mmm,<10-10>,0.93969262,0.34202014 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,-0.98480775,0.17364818 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,-0.64278761,-0.76604444 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,0.34202014,-0.93969262 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,0.34202014,-0.93969262 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,0.64278761,0.76604444 -10,RC_nd1,622,Hexagonal_High 6/mmm,<11-20>,0.98480775,-0.17364818 -10,RC_nd1,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,-0.93969262,-0.34202014 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,-0.76604444,0.64278761 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,-0.17364818,-0.98480775 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,0.17364818,0.98480775 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,0.76604444,-0.64278761 -10,RC_nd1,6,Hexagonal_Low 6/m,<10-10>,0.93969262,0.34202014 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,-0.98480775,0.17364818 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,-0.64278761,-0.76604444 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,-0.34202014,0.93969262 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,0.34202014,-0.93969262 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,0.64278761,0.76604444 -10,RC_nd1,6,Hexagonal_Low 6/m,<11-20>,0.98480775,-0.17364818 -10,RC_nd1,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,-0.93969262,-0.34202014 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,-0.17364818,-0.98480775 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,0.17364818,0.98480775 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,0.76604444,-0.64278761 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,0.76604444,-0.64278761 -10,RC_nd1,32,Trigonal_High -3m,<0-110>,0.93969262,0.34202014 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,-0.76604444,0.64278761 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,-0.17364818,-0.98480775 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,0.17364818,0.98480775 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,0.76604444,-0.64278761 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,0.93969262,0.34202014 -10,RC_nd1,32,Trigonal_High -3m,<1-100>,0.93969262,0.34202014 -10,RC_nd1,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,-0.98480775,0.17364818 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,-0.64278761,-0.76604444 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,-0.34202014,0.93969262 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,0.34202014,-0.93969262 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,0.64278761,0.76604444 -10,RC_nd1,3,Trigonal_Low -3,<-1-120>,0.98480775,-0.17364818 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,-0.98480775,0.17364818 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,-0.64278761,-0.76604444 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,-0.34202014,0.93969262 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,0.34202014,-0.93969262 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,0.64278761,0.76604444 -10,RC_nd1,3,Trigonal_Low -3,<2-1-10>,0.98480775,-0.17364818 -10,RC_nd1,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -10,RC_nd1,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -10,RC_nd1,422,Tetragonal_High 4/mmm,<100>,-0.93969262,-0.34202014 -10,RC_nd1,422,Tetragonal_High 4/mmm,<100>,-0.34202014,0.93969262 -10,RC_nd1,422,Tetragonal_High 4/mmm,<100>,0.34202014,-0.93969262 -10,RC_nd1,422,Tetragonal_High 4/mmm,<100>,0.93969262,0.34202014 -10,RC_nd1,422,Tetragonal_High 4/mmm,<110>,-0.42261826,-0.90630779 -10,RC_nd1,422,Tetragonal_High 4/mmm,<110>,0.42261826,0.90630779 -10,RC_nd1,422,Tetragonal_High 4/mmm,<110>,0.90630779,-0.42261826 -10,RC_nd1,422,Tetragonal_High 4/mmm,<110>,0.90630779,-0.42261826 -10,RC_nd1,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,4,Tetragonal_Low 4/m,<100>,-0.93969262,-0.34202014 -10,RC_nd1,4,Tetragonal_Low 4/m,<100>,-0.34202014,0.93969262 -10,RC_nd1,4,Tetragonal_Low 4/m,<100>,0.34202014,-0.93969262 -10,RC_nd1,4,Tetragonal_Low 4/m,<100>,0.93969262,0.34202014 -10,RC_nd1,4,Tetragonal_Low 4/m,<110>,-0.90630779,0.42261826 -10,RC_nd1,4,Tetragonal_Low 4/m,<110>,-0.42261826,-0.90630779 -10,RC_nd1,4,Tetragonal_Low 4/m,<110>,0.42261826,0.90630779 -10,RC_nd1,4,Tetragonal_Low 4/m,<110>,0.90630779,-0.42261826 -10,RC_nd1,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -10,RC_nd1,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -10,RC_nd1,222,OrthoRhombic mmm,<100>,-0.93969262,-0.34202014 -10,RC_nd1,222,OrthoRhombic mmm,<100>,0.93969262,0.34202014 -10,RC_nd1,222,OrthoRhombic mmm,<010>,-0.34202014,0.93969262 -10,RC_nd1,222,OrthoRhombic mmm,<010>,0.34202014,-0.93969262 -10,RC_nd1,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -10,RC_nd1,2,Monoclinic 2/m,<100>,-0.93969262,-0.34202014 -10,RC_nd1,2,Monoclinic 2/m,<100>,0.93969262,0.34202014 -10,RC_nd1,2,Monoclinic 2/m,<010>,-0.34202014,0.93969262 -10,RC_nd1,2,Monoclinic 2/m,<010>,0.34202014,-0.93969262 -10,RC_nd1,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -10,RC_nd1,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -10,RC_nd1,1,Triclinic -1,<100>,-0.93969262,-0.34202014 -10,RC_nd1,1,Triclinic -1,<100>,0.93969262,0.34202014 -10,RC_nd1,1,Triclinic -1,<010>,-0.34202014,0.93969262 -10,RC_nd1,1,Triclinic -1,<010>,0.34202014,-0.93969262 -11,RC_nd2,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,432,Cubic_High m-3m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,432,Cubic_High m-3m,<001>,0.57357644,-0.81915204 -11,RC_nd2,432,Cubic_High m-3m,<001>,0.57357644,-0.81915204 -11,RC_nd2,432,Cubic_High m-3m,<001>,0.81915204,0.57357644 -11,RC_nd2,432,Cubic_High m-3m,<001>,0.81915204,0.57357644 -11,RC_nd2,432,Cubic_High m-3m,<011>,-0.33930389,-0.23758314 -11,RC_nd2,432,Cubic_High m-3m,<011>,-0.33930389,-0.23758314 -11,RC_nd2,432,Cubic_High m-3m,<011>,-0.23758314,0.33930389 -11,RC_nd2,432,Cubic_High m-3m,<011>,-0.23758314,0.33930389 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.17364818,0.98480775 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.17364818,0.98480775 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.23758314,-0.33930389 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.23758314,-0.33930389 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.33930389,0.23758314 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.33930389,0.23758314 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.98480775,-0.17364818 -11,RC_nd2,432,Cubic_High m-3m,<011>,0.98480775,-0.17364818 -11,RC_nd2,432,Cubic_High m-3m,<111>,-0.50977400,0.08988691 -11,RC_nd2,432,Cubic_High m-3m,<111>,-0.50977400,0.08988691 -11,RC_nd2,432,Cubic_High m-3m,<111>,-0.08988691,-0.50977400 -11,RC_nd2,432,Cubic_High m-3m,<111>,-0.08988691,-0.50977400 -11,RC_nd2,432,Cubic_High m-3m,<111>,0.08988691,0.50977400 -11,RC_nd2,432,Cubic_High m-3m,<111>,0.08988691,0.50977400 -11,RC_nd2,432,Cubic_High m-3m,<111>,0.50977400,-0.08988691 -11,RC_nd2,432,Cubic_High m-3m,<111>,0.50977400,-0.08988691 -11,RC_nd2,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -11,RC_nd2,23,Cubic_Low m-3,<001>,-0.00000000,-0.00000000 -11,RC_nd2,23,Cubic_Low m-3,<001>,0.57357644,-0.81915204 -11,RC_nd2,23,Cubic_Low m-3,<001>,0.57357644,-0.81915204 -11,RC_nd2,23,Cubic_Low m-3,<001>,0.81915204,0.57357644 -11,RC_nd2,23,Cubic_Low m-3,<001>,0.81915204,0.57357644 -11,RC_nd2,23,Cubic_Low m-3,<011>,-0.33930389,-0.23758314 -11,RC_nd2,23,Cubic_Low m-3,<011>,-0.33930389,-0.23758314 -11,RC_nd2,23,Cubic_Low m-3,<011>,-0.23758314,0.33930389 -11,RC_nd2,23,Cubic_Low m-3,<011>,-0.23758314,0.33930389 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.17364818,0.98480775 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.17364818,0.98480775 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.23758314,-0.33930389 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.23758314,-0.33930389 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.33930389,0.23758314 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.33930389,0.23758314 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.98480775,-0.17364818 -11,RC_nd2,23,Cubic_Low m-3,<011>,0.98480775,-0.17364818 -11,RC_nd2,23,Cubic_Low m-3,<111>,-0.50977400,0.08988691 -11,RC_nd2,23,Cubic_Low m-3,<111>,-0.50977400,0.08988691 -11,RC_nd2,23,Cubic_Low m-3,<111>,-0.08988691,-0.50977400 -11,RC_nd2,23,Cubic_Low m-3,<111>,-0.08988691,-0.50977400 -11,RC_nd2,23,Cubic_Low m-3,<111>,0.08988691,0.50977400 -11,RC_nd2,23,Cubic_Low m-3,<111>,0.08988691,0.50977400 -11,RC_nd2,23,Cubic_Low m-3,<111>,0.50977400,-0.08988691 -11,RC_nd2,23,Cubic_Low m-3,<111>,0.50977400,-0.08988691 -11,RC_nd2,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,622,Hexagonal_High 6/mmm,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,-0.81915204,-0.57357644 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,-0.08715574,0.99619470 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,0.08715574,-0.99619470 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,0.81915204,0.57357644 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,0.90630779,-0.42261826 -11,RC_nd2,622,Hexagonal_High 6/mmm,<10-10>,0.90630779,-0.42261826 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,-0.99619470,-0.08715574 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,-0.42261826,-0.90630779 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,0.42261826,0.90630779 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,0.57357644,-0.81915204 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,0.57357644,-0.81915204 -11,RC_nd2,622,Hexagonal_High 6/mmm,<11-20>,0.99619470,0.08715574 -11,RC_nd2,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,6,Hexagonal_Low 6/m,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,-0.90630779,0.42261826 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,-0.81915204,-0.57357644 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,-0.08715574,0.99619470 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,0.08715574,-0.99619470 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,0.81915204,0.57357644 -11,RC_nd2,6,Hexagonal_Low 6/m,<10-10>,0.90630779,-0.42261826 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,-0.99619470,-0.08715574 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,-0.57357644,0.81915204 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,-0.42261826,-0.90630779 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,0.42261826,0.90630779 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,0.57357644,-0.81915204 -11,RC_nd2,6,Hexagonal_Low 6/m,<11-20>,0.99619470,0.08715574 -11,RC_nd2,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,32,Trigonal_High -3m,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,-0.81915204,-0.57357644 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,-0.08715574,0.99619470 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,0.08715574,-0.99619470 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,0.81915204,0.57357644 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,0.90630779,-0.42261826 -11,RC_nd2,32,Trigonal_High -3m,<0-110>,0.90630779,-0.42261826 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,-0.90630779,0.42261826 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,-0.08715574,0.99619470 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,0.08715574,-0.99619470 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,0.81915204,0.57357644 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,0.81915204,0.57357644 -11,RC_nd2,32,Trigonal_High -3m,<1-100>,0.90630779,-0.42261826 -11,RC_nd2,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,3,Trigonal_Low -3,<0001>,-0.00000000,-0.00000000 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,-0.99619470,-0.08715574 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,-0.57357644,0.81915204 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,-0.42261826,-0.90630779 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,0.42261826,0.90630779 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,0.57357644,-0.81915204 -11,RC_nd2,3,Trigonal_Low -3,<-1-120>,0.99619470,0.08715574 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,-0.99619470,-0.08715574 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,-0.57357644,0.81915204 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,-0.42261826,-0.90630779 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,0.42261826,0.90630779 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,0.57357644,-0.81915204 -11,RC_nd2,3,Trigonal_Low -3,<2-1-10>,0.99619470,0.08715574 -11,RC_nd2,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -11,RC_nd2,422,Tetragonal_High 4/mmm,<001>,-0.00000000,-0.00000000 -11,RC_nd2,422,Tetragonal_High 4/mmm,<100>,-0.81915204,-0.57357644 -11,RC_nd2,422,Tetragonal_High 4/mmm,<100>,-0.57357644,0.81915204 -11,RC_nd2,422,Tetragonal_High 4/mmm,<100>,0.57357644,-0.81915204 -11,RC_nd2,422,Tetragonal_High 4/mmm,<100>,0.81915204,0.57357644 -11,RC_nd2,422,Tetragonal_High 4/mmm,<110>,-0.17364818,-0.98480775 -11,RC_nd2,422,Tetragonal_High 4/mmm,<110>,0.17364818,0.98480775 -11,RC_nd2,422,Tetragonal_High 4/mmm,<110>,0.98480775,-0.17364818 -11,RC_nd2,422,Tetragonal_High 4/mmm,<110>,0.98480775,-0.17364818 -11,RC_nd2,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,4,Tetragonal_Low 4/m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,4,Tetragonal_Low 4/m,<100>,-0.81915204,-0.57357644 -11,RC_nd2,4,Tetragonal_Low 4/m,<100>,-0.57357644,0.81915204 -11,RC_nd2,4,Tetragonal_Low 4/m,<100>,0.57357644,-0.81915204 -11,RC_nd2,4,Tetragonal_Low 4/m,<100>,0.81915204,0.57357644 -11,RC_nd2,4,Tetragonal_Low 4/m,<110>,-0.98480775,0.17364818 -11,RC_nd2,4,Tetragonal_Low 4/m,<110>,-0.17364818,-0.98480775 -11,RC_nd2,4,Tetragonal_Low 4/m,<110>,0.17364818,0.98480775 -11,RC_nd2,4,Tetragonal_Low 4/m,<110>,0.98480775,-0.17364818 -11,RC_nd2,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -11,RC_nd2,222,OrthoRhombic mmm,<001>,-0.00000000,-0.00000000 -11,RC_nd2,222,OrthoRhombic mmm,<100>,-0.81915204,-0.57357644 -11,RC_nd2,222,OrthoRhombic mmm,<100>,0.81915204,0.57357644 -11,RC_nd2,222,OrthoRhombic mmm,<010>,-0.57357644,0.81915204 -11,RC_nd2,222,OrthoRhombic mmm,<010>,0.57357644,-0.81915204 -11,RC_nd2,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,2,Monoclinic 2/m,<001>,-0.00000000,-0.00000000 -11,RC_nd2,2,Monoclinic 2/m,<100>,-0.81915204,-0.57357644 -11,RC_nd2,2,Monoclinic 2/m,<100>,0.81915204,0.57357644 -11,RC_nd2,2,Monoclinic 2/m,<010>,-0.57357644,0.81915204 -11,RC_nd2,2,Monoclinic 2/m,<010>,0.57357644,-0.81915204 -11,RC_nd2,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -11,RC_nd2,1,Triclinic -1,<001>,-0.00000000,-0.00000000 -11,RC_nd2,1,Triclinic -1,<100>,-0.81915204,-0.57357644 -11,RC_nd2,1,Triclinic -1,<100>,0.81915204,0.57357644 -11,RC_nd2,1,Triclinic -1,<010>,-0.57357644,0.81915204 -11,RC_nd2,1,Triclinic -1,<010>,0.57357644,-0.81915204 +0,Cube,432,Cubic_High m-3m,{001},0.00000000,-1.00000000 +0,Cube,432,Cubic_High m-3m,{001},0.00000000,-1.00000000 +0,Cube,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +0,Cube,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +0,Cube,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +0,Cube,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +0,Cube,432,Cubic_High m-3m,{011},-0.41421356,-0.00000000 +0,Cube,432,Cubic_High m-3m,{011},-0.41421356,-0.00000000 +0,Cube,432,Cubic_High m-3m,{011},-0.00000000,-0.41421356 +0,Cube,432,Cubic_High m-3m,{011},-0.00000000,-0.41421356 +0,Cube,432,Cubic_High m-3m,{011},-0.00000000,0.41421356 +0,Cube,432,Cubic_High m-3m,{011},-0.00000000,0.41421356 +0,Cube,432,Cubic_High m-3m,{011},0.41421356,0.00000000 +0,Cube,432,Cubic_High m-3m,{011},0.41421356,0.00000000 +0,Cube,432,Cubic_High m-3m,{011},0.70710678,-0.70710678 +0,Cube,432,Cubic_High m-3m,{011},0.70710678,-0.70710678 +0,Cube,432,Cubic_High m-3m,{011},0.70710678,0.70710678 +0,Cube,432,Cubic_High m-3m,{011},0.70710678,0.70710678 +0,Cube,432,Cubic_High m-3m,{111},-0.36602540,-0.36602540 +0,Cube,432,Cubic_High m-3m,{111},-0.36602540,-0.36602540 +0,Cube,432,Cubic_High m-3m,{111},-0.36602540,0.36602540 +0,Cube,432,Cubic_High m-3m,{111},-0.36602540,0.36602540 +0,Cube,432,Cubic_High m-3m,{111},0.36602540,-0.36602540 +0,Cube,432,Cubic_High m-3m,{111},0.36602540,-0.36602540 +0,Cube,432,Cubic_High m-3m,{111},0.36602540,0.36602540 +0,Cube,432,Cubic_High m-3m,{111},0.36602540,0.36602540 +0,Cube,23,Cubic_Low m-3,{001},0.00000000,-1.00000000 +0,Cube,23,Cubic_Low m-3,{001},0.00000000,-1.00000000 +0,Cube,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +0,Cube,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +0,Cube,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +0,Cube,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +0,Cube,23,Cubic_Low m-3,{011},-0.41421356,-0.00000000 +0,Cube,23,Cubic_Low m-3,{011},-0.41421356,-0.00000000 +0,Cube,23,Cubic_Low m-3,{011},0.00000000,-0.41421356 +0,Cube,23,Cubic_Low m-3,{011},0.00000000,-0.41421356 +0,Cube,23,Cubic_Low m-3,{011},-0.00000000,0.41421356 +0,Cube,23,Cubic_Low m-3,{011},-0.00000000,0.41421356 +0,Cube,23,Cubic_Low m-3,{011},0.41421356,0.00000000 +0,Cube,23,Cubic_Low m-3,{011},0.41421356,0.00000000 +0,Cube,23,Cubic_Low m-3,{011},0.70710678,-0.70710678 +0,Cube,23,Cubic_Low m-3,{011},0.70710678,-0.70710678 +0,Cube,23,Cubic_Low m-3,{011},0.70710678,0.70710678 +0,Cube,23,Cubic_Low m-3,{011},0.70710678,0.70710678 +0,Cube,23,Cubic_Low m-3,{111},-0.36602540,-0.36602540 +0,Cube,23,Cubic_Low m-3,{111},-0.36602540,-0.36602540 +0,Cube,23,Cubic_Low m-3,{111},-0.36602540,0.36602540 +0,Cube,23,Cubic_Low m-3,{111},-0.36602540,0.36602540 +0,Cube,23,Cubic_Low m-3,{111},0.36602540,-0.36602540 +0,Cube,23,Cubic_Low m-3,{111},0.36602540,-0.36602540 +0,Cube,23,Cubic_Low m-3,{111},0.36602540,0.36602540 +0,Cube,23,Cubic_Low m-3,{111},0.36602540,0.36602540 +0,Cube,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},-1.00000000,-0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},-0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.50000000,0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-0.86602540,0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.00000000,-1.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.00000000,-1.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.86602540,0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},-1.00000000,-0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},-0.50000000,-0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{10-10},-0.50000000,0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.50000000,-0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.50000000,0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-0.86602540,0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},0.00000000,-1.00000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-0.00000000,1.00000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},0.86602540,0.50000000 +0,Cube,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +0,Cube,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +0,Cube,32,Trigonal_High -3m,{0-110},-1.00000000,-0.00000000 +0,Cube,32,Trigonal_High -3m,{0-110},-0.50000000,-0.86602540 +0,Cube,32,Trigonal_High -3m,{0-110},0.50000000,-0.86602540 +0,Cube,32,Trigonal_High -3m,{0-110},0.50000000,-0.86602540 +0,Cube,32,Trigonal_High -3m,{0-110},0.50000000,0.86602540 +0,Cube,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +0,Cube,32,Trigonal_High -3m,{1-100},-0.50000000,-0.86602540 +0,Cube,32,Trigonal_High -3m,{1-100},-0.50000000,0.86602540 +0,Cube,32,Trigonal_High -3m,{1-100},0.50000000,-0.86602540 +0,Cube,32,Trigonal_High -3m,{1-100},0.50000000,0.86602540 +0,Cube,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +0,Cube,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +0,Cube,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{-1-120},-0.86602540,-0.50000000 +0,Cube,3,Trigonal_Low -3,{-1-120},-0.86602540,0.50000000 +0,Cube,3,Trigonal_Low -3,{-1-120},0.00000000,-1.00000000 +0,Cube,3,Trigonal_Low -3,{-1-120},-0.00000000,1.00000000 +0,Cube,3,Trigonal_Low -3,{-1-120},0.86602540,-0.50000000 +0,Cube,3,Trigonal_Low -3,{-1-120},0.86602540,0.50000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},-0.86602540,-0.50000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},-0.86602540,0.50000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},0.00000000,-1.00000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},-0.00000000,1.00000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},0.86602540,-0.50000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},0.86602540,0.50000000 +0,Cube,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{100},-1.00000000,-0.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{100},0.00000000,-1.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{100},-0.00000000,1.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +0,Cube,422,Tetragonal_High 4/mmm,{110},-0.70710678,-0.70710678 +0,Cube,422,Tetragonal_High 4/mmm,{110},0.70710678,-0.70710678 +0,Cube,422,Tetragonal_High 4/mmm,{110},0.70710678,-0.70710678 +0,Cube,422,Tetragonal_High 4/mmm,{110},0.70710678,0.70710678 +0,Cube,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +0,Cube,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +0,Cube,4,Tetragonal_Low 4/m,{100},-1.00000000,-0.00000000 +0,Cube,4,Tetragonal_Low 4/m,{100},0.00000000,-1.00000000 +0,Cube,4,Tetragonal_Low 4/m,{100},-0.00000000,1.00000000 +0,Cube,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +0,Cube,4,Tetragonal_Low 4/m,{110},-0.70710678,-0.70710678 +0,Cube,4,Tetragonal_Low 4/m,{110},-0.70710678,0.70710678 +0,Cube,4,Tetragonal_Low 4/m,{110},0.70710678,-0.70710678 +0,Cube,4,Tetragonal_Low 4/m,{110},0.70710678,0.70710678 +0,Cube,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +0,Cube,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +0,Cube,222,OrthoRhombic mmm,{100},-1.00000000,-0.00000000 +0,Cube,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +0,Cube,222,OrthoRhombic mmm,{010},0.00000000,-1.00000000 +0,Cube,222,OrthoRhombic mmm,{010},-0.00000000,1.00000000 +0,Cube,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +0,Cube,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +0,Cube,2,Monoclinic 2/m,{100},-1.00000000,-0.00000000 +0,Cube,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +0,Cube,2,Monoclinic 2/m,{010},0.00000000,-1.00000000 +0,Cube,2,Monoclinic 2/m,{010},-0.00000000,1.00000000 +0,Cube,1,Triclinic -1,{001},-0.00000000,-0.00000000 +0,Cube,1,Triclinic -1,{001},-0.00000000,-0.00000000 +0,Cube,1,Triclinic -1,{100},-1.00000000,-0.00000000 +0,Cube,1,Triclinic -1,{100},1.00000000,0.00000000 +0,Cube,1,Triclinic -1,{010},0.00000000,-1.00000000 +0,Cube,1,Triclinic -1,{010},-0.00000000,1.00000000 +1,Goss,432,Cubic_High m-3m,{001},0.00000000,-0.41421356 +1,Goss,432,Cubic_High m-3m,{001},0.00000000,-0.41421356 +1,Goss,432,Cubic_High m-3m,{001},-0.00000000,0.41421356 +1,Goss,432,Cubic_High m-3m,{001},-0.00000000,0.41421356 +1,Goss,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +1,Goss,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +1,Goss,432,Cubic_High m-3m,{011},-0.47140452,-0.33333333 +1,Goss,432,Cubic_High m-3m,{011},-0.47140452,-0.33333333 +1,Goss,432,Cubic_High m-3m,{011},-0.47140452,0.33333333 +1,Goss,432,Cubic_High m-3m,{011},-0.47140452,0.33333333 +1,Goss,432,Cubic_High m-3m,{011},-0.00000000,-1.00000000 +1,Goss,432,Cubic_High m-3m,{011},-0.00000000,-1.00000000 +1,Goss,432,Cubic_High m-3m,{011},-0.00000000,-0.00000000 +1,Goss,432,Cubic_High m-3m,{011},-0.00000000,-0.00000000 +1,Goss,432,Cubic_High m-3m,{011},0.47140452,-0.33333333 +1,Goss,432,Cubic_High m-3m,{011},0.47140452,-0.33333333 +1,Goss,432,Cubic_High m-3m,{011},0.47140452,0.33333333 +1,Goss,432,Cubic_High m-3m,{011},0.47140452,0.33333333 +1,Goss,432,Cubic_High m-3m,{111},-0.31783725,0.00000000 +1,Goss,432,Cubic_High m-3m,{111},-0.31783725,0.00000000 +1,Goss,432,Cubic_High m-3m,{111},0.31783725,0.00000000 +1,Goss,432,Cubic_High m-3m,{111},0.31783725,0.00000000 +1,Goss,432,Cubic_High m-3m,{111},0.57735027,-0.81649658 +1,Goss,432,Cubic_High m-3m,{111},0.57735027,-0.81649658 +1,Goss,432,Cubic_High m-3m,{111},0.57735027,0.81649658 +1,Goss,432,Cubic_High m-3m,{111},0.57735027,0.81649658 +1,Goss,23,Cubic_Low m-3,{001},0.00000000,-0.41421356 +1,Goss,23,Cubic_Low m-3,{001},0.00000000,-0.41421356 +1,Goss,23,Cubic_Low m-3,{001},-0.00000000,0.41421356 +1,Goss,23,Cubic_Low m-3,{001},-0.00000000,0.41421356 +1,Goss,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +1,Goss,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +1,Goss,23,Cubic_Low m-3,{011},-0.47140452,-0.33333333 +1,Goss,23,Cubic_Low m-3,{011},-0.47140452,-0.33333333 +1,Goss,23,Cubic_Low m-3,{011},-0.47140452,0.33333333 +1,Goss,23,Cubic_Low m-3,{011},-0.47140452,0.33333333 +1,Goss,23,Cubic_Low m-3,{011},0.00000000,-1.00000000 +1,Goss,23,Cubic_Low m-3,{011},0.00000000,-1.00000000 +1,Goss,23,Cubic_Low m-3,{011},-0.00000000,-0.00000000 +1,Goss,23,Cubic_Low m-3,{011},-0.00000000,-0.00000000 +1,Goss,23,Cubic_Low m-3,{011},0.47140452,-0.33333333 +1,Goss,23,Cubic_Low m-3,{011},0.47140452,-0.33333333 +1,Goss,23,Cubic_Low m-3,{011},0.47140452,0.33333333 +1,Goss,23,Cubic_Low m-3,{011},0.47140452,0.33333333 +1,Goss,23,Cubic_Low m-3,{111},-0.57735027,-0.81649658 +1,Goss,23,Cubic_Low m-3,{111},-0.57735027,-0.81649658 +1,Goss,23,Cubic_Low m-3,{111},-0.31783725,-0.00000000 +1,Goss,23,Cubic_Low m-3,{111},-0.31783725,-0.00000000 +1,Goss,23,Cubic_Low m-3,{111},0.31783725,0.00000000 +1,Goss,23,Cubic_Low m-3,{111},0.31783725,0.00000000 +1,Goss,23,Cubic_Low m-3,{111},0.57735027,-0.81649658 +1,Goss,23,Cubic_Low m-3,{111},0.57735027,-0.81649658 +1,Goss,622,Hexagonal_High 6/mmm,{0001},0.00000000,-0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{0001},0.00000000,-0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},-0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},-0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{0001},0.00000000,-0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{0001},0.00000000,-0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{10-10},-0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{10-10},-0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +1,Goss,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{11-20},0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{11-20},0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{0001},0.00000000,-0.41421356 +1,Goss,32,Trigonal_High -3m,{0001},0.00000000,-0.41421356 +1,Goss,32,Trigonal_High -3m,{0-110},-0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{0-110},-0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{0-110},0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{0-110},0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +1,Goss,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +1,Goss,32,Trigonal_High -3m,{1-100},-0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{1-100},-0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{1-100},0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{1-100},0.31010205,0.37979590 +1,Goss,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +1,Goss,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +1,Goss,3,Trigonal_Low -3,{0001},0.00000000,-0.41421356 +1,Goss,3,Trigonal_Low -3,{0001},0.00000000,-0.41421356 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.00000000,0.41421356 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.00000000,0.41421356 +1,Goss,3,Trigonal_Low -3,{-1-120},0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{-1-120},0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.00000000,0.41421356 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.00000000,0.41421356 +1,Goss,3,Trigonal_Low -3,{2-1-10},0.63981621,0.26120387 +1,Goss,3,Trigonal_Low -3,{2-1-10},0.63981621,0.26120387 +1,Goss,422,Tetragonal_High 4/mmm,{001},0.00000000,-0.41421356 +1,Goss,422,Tetragonal_High 4/mmm,{001},0.00000000,-0.41421356 +1,Goss,422,Tetragonal_High 4/mmm,{100},-0.00000000,0.41421356 +1,Goss,422,Tetragonal_High 4/mmm,{100},-0.00000000,0.41421356 +1,Goss,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +1,Goss,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +1,Goss,422,Tetragonal_High 4/mmm,{110},-0.47140452,0.33333333 +1,Goss,422,Tetragonal_High 4/mmm,{110},-0.47140452,0.33333333 +1,Goss,422,Tetragonal_High 4/mmm,{110},0.47140452,0.33333333 +1,Goss,422,Tetragonal_High 4/mmm,{110},0.47140452,0.33333333 +1,Goss,4,Tetragonal_Low 4/m,{001},0.00000000,-0.41421356 +1,Goss,4,Tetragonal_Low 4/m,{001},0.00000000,-0.41421356 +1,Goss,4,Tetragonal_Low 4/m,{100},-0.00000000,0.41421356 +1,Goss,4,Tetragonal_Low 4/m,{100},-0.00000000,0.41421356 +1,Goss,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +1,Goss,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +1,Goss,4,Tetragonal_Low 4/m,{110},-0.47140452,0.33333333 +1,Goss,4,Tetragonal_Low 4/m,{110},-0.47140452,0.33333333 +1,Goss,4,Tetragonal_Low 4/m,{110},0.47140452,0.33333333 +1,Goss,4,Tetragonal_Low 4/m,{110},0.47140452,0.33333333 +1,Goss,222,OrthoRhombic mmm,{001},0.00000000,-0.41421356 +1,Goss,222,OrthoRhombic mmm,{001},0.00000000,-0.41421356 +1,Goss,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +1,Goss,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +1,Goss,222,OrthoRhombic mmm,{010},-0.00000000,0.41421356 +1,Goss,222,OrthoRhombic mmm,{010},-0.00000000,0.41421356 +1,Goss,2,Monoclinic 2/m,{001},0.00000000,-0.41421356 +1,Goss,2,Monoclinic 2/m,{001},0.00000000,-0.41421356 +1,Goss,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +1,Goss,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +1,Goss,2,Monoclinic 2/m,{010},-0.00000000,0.41421356 +1,Goss,2,Monoclinic 2/m,{010},-0.00000000,0.41421356 +1,Goss,1,Triclinic -1,{001},0.00000000,-0.41421356 +1,Goss,1,Triclinic -1,{001},0.00000000,-0.41421356 +1,Goss,1,Triclinic -1,{100},1.00000000,0.00000000 +1,Goss,1,Triclinic -1,{100},1.00000000,0.00000000 +1,Goss,1,Triclinic -1,{010},-0.00000000,0.41421356 +1,Goss,1,Triclinic -1,{010},-0.00000000,0.41421356 +2,Brass,432,Cubic_High m-3m,{001},-0.23758314,0.33930389 +2,Brass,432,Cubic_High m-3m,{001},-0.23758314,0.33930389 +2,Brass,432,Cubic_High m-3m,{001},0.23758314,-0.33930389 +2,Brass,432,Cubic_High m-3m,{001},0.23758314,-0.33930389 +2,Brass,432,Cubic_High m-3m,{001},0.81915204,0.57357644 +2,Brass,432,Cubic_High m-3m,{001},0.81915204,0.57357644 +2,Brass,432,Cubic_High m-3m,{011},-0.57734412,0.00266416 +2,Brass,432,Cubic_High m-3m,{011},-0.57734412,0.00266416 +2,Brass,432,Cubic_High m-3m,{011},-0.57357644,0.81915204 +2,Brass,432,Cubic_High m-3m,{011},-0.19495983,-0.54343721 +2,Brass,432,Cubic_High m-3m,{011},-0.19495983,-0.54343721 +2,Brass,432,Cubic_High m-3m,{011},-0.00000000,-0.00000000 +2,Brass,432,Cubic_High m-3m,{011},-0.00000000,-0.00000000 +2,Brass,432,Cubic_High m-3m,{011},0.19495983,0.54343721 +2,Brass,432,Cubic_High m-3m,{011},0.19495983,0.54343721 +2,Brass,432,Cubic_High m-3m,{011},0.57357644,-0.81915204 +2,Brass,432,Cubic_High m-3m,{011},0.57734412,-0.00266416 +2,Brass,432,Cubic_High m-3m,{011},0.57734412,-0.00266416 +2,Brass,432,Cubic_High m-3m,{111},-0.26035703,-0.18230395 +2,Brass,432,Cubic_High m-3m,{111},-0.26035703,-0.18230395 +2,Brass,432,Cubic_High m-3m,{111},0.00461445,0.99998935 +2,Brass,432,Cubic_High m-3m,{111},0.00461445,0.99998935 +2,Brass,432,Cubic_High m-3m,{111},0.26035703,0.18230395 +2,Brass,432,Cubic_High m-3m,{111},0.26035703,0.18230395 +2,Brass,432,Cubic_High m-3m,{111},0.94126085,-0.33768033 +2,Brass,432,Cubic_High m-3m,{111},0.94126085,-0.33768033 +2,Brass,23,Cubic_Low m-3,{001},-0.23758314,0.33930389 +2,Brass,23,Cubic_Low m-3,{001},-0.23758314,0.33930389 +2,Brass,23,Cubic_Low m-3,{001},0.23758314,-0.33930389 +2,Brass,23,Cubic_Low m-3,{001},0.23758314,-0.33930389 +2,Brass,23,Cubic_Low m-3,{001},0.81915204,0.57357644 +2,Brass,23,Cubic_Low m-3,{001},0.81915204,0.57357644 +2,Brass,23,Cubic_Low m-3,{011},-0.57734412,0.00266416 +2,Brass,23,Cubic_Low m-3,{011},-0.57734412,0.00266416 +2,Brass,23,Cubic_Low m-3,{011},-0.57357644,0.81915204 +2,Brass,23,Cubic_Low m-3,{011},-0.57357644,0.81915204 +2,Brass,23,Cubic_Low m-3,{011},-0.19495983,-0.54343721 +2,Brass,23,Cubic_Low m-3,{011},-0.19495983,-0.54343721 +2,Brass,23,Cubic_Low m-3,{011},-0.00000000,-0.00000000 +2,Brass,23,Cubic_Low m-3,{011},-0.00000000,-0.00000000 +2,Brass,23,Cubic_Low m-3,{011},0.19495983,0.54343721 +2,Brass,23,Cubic_Low m-3,{011},0.19495983,0.54343721 +2,Brass,23,Cubic_Low m-3,{011},0.57734412,-0.00266416 +2,Brass,23,Cubic_Low m-3,{011},0.57734412,-0.00266416 +2,Brass,23,Cubic_Low m-3,{111},-0.94126085,0.33768033 +2,Brass,23,Cubic_Low m-3,{111},-0.94126085,0.33768033 +2,Brass,23,Cubic_Low m-3,{111},-0.26035703,-0.18230395 +2,Brass,23,Cubic_Low m-3,{111},-0.26035703,-0.18230395 +2,Brass,23,Cubic_Low m-3,{111},0.00461445,0.99998935 +2,Brass,23,Cubic_Low m-3,{111},0.00461445,0.99998935 +2,Brass,23,Cubic_Low m-3,{111},0.26035703,0.18230395 +2,Brass,23,Cubic_Low m-3,{111},0.26035703,0.18230395 +2,Brass,622,Hexagonal_High 6/mmm,{0001},0.23758314,-0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{0001},0.23758314,-0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},-0.47186271,0.13324336 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},-0.47186271,0.13324336 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.03617875,0.48897782 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.03617875,0.48897782 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.81915204,0.57357644 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.81915204,0.57357644 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.67392715,-0.15301781 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.67392715,-0.15301781 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.23758314,0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.23758314,0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},0.37428637,0.58094919 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},0.37428637,0.58094919 +2,Brass,6,Hexagonal_Low 6/m,{0001},0.23758314,-0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{0001},0.23758314,-0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{10-10},-0.47186271,0.13324336 +2,Brass,6,Hexagonal_Low 6/m,{10-10},-0.47186271,0.13324336 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.03617875,0.48897782 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.03617875,0.48897782 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.81915204,0.57357644 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.81915204,0.57357644 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.67392715,-0.15301781 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.67392715,-0.15301781 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.23758314,0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.23758314,0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{11-20},0.37428637,0.58094919 +2,Brass,6,Hexagonal_Low 6/m,{11-20},0.37428637,0.58094919 +2,Brass,32,Trigonal_High -3m,{0001},0.23758314,-0.33930389 +2,Brass,32,Trigonal_High -3m,{0001},0.23758314,-0.33930389 +2,Brass,32,Trigonal_High -3m,{0-110},-0.47186271,0.13324336 +2,Brass,32,Trigonal_High -3m,{0-110},-0.47186271,0.13324336 +2,Brass,32,Trigonal_High -3m,{0-110},0.03617875,0.48897782 +2,Brass,32,Trigonal_High -3m,{0-110},0.03617875,0.48897782 +2,Brass,32,Trigonal_High -3m,{0-110},0.81915204,0.57357644 +2,Brass,32,Trigonal_High -3m,{0-110},0.81915204,0.57357644 +2,Brass,32,Trigonal_High -3m,{1-100},-0.47186271,0.13324336 +2,Brass,32,Trigonal_High -3m,{1-100},-0.47186271,0.13324336 +2,Brass,32,Trigonal_High -3m,{1-100},0.03617875,0.48897782 +2,Brass,32,Trigonal_High -3m,{1-100},0.03617875,0.48897782 +2,Brass,32,Trigonal_High -3m,{1-100},0.81915204,0.57357644 +2,Brass,32,Trigonal_High -3m,{1-100},0.81915204,0.57357644 +2,Brass,3,Trigonal_Low -3,{0001},0.23758314,-0.33930389 +2,Brass,3,Trigonal_Low -3,{0001},0.23758314,-0.33930389 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.67392715,-0.15301781 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.67392715,-0.15301781 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.23758314,0.33930389 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.23758314,0.33930389 +2,Brass,3,Trigonal_Low -3,{-1-120},0.37428637,0.58094919 +2,Brass,3,Trigonal_Low -3,{-1-120},0.37428637,0.58094919 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.67392715,-0.15301781 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.67392715,-0.15301781 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.23758314,0.33930389 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.23758314,0.33930389 +2,Brass,3,Trigonal_Low -3,{2-1-10},0.37428637,0.58094919 +2,Brass,3,Trigonal_Low -3,{2-1-10},0.37428637,0.58094919 +2,Brass,422,Tetragonal_High 4/mmm,{001},0.23758314,-0.33930389 +2,Brass,422,Tetragonal_High 4/mmm,{001},0.23758314,-0.33930389 +2,Brass,422,Tetragonal_High 4/mmm,{100},-0.23758314,0.33930389 +2,Brass,422,Tetragonal_High 4/mmm,{100},-0.23758314,0.33930389 +2,Brass,422,Tetragonal_High 4/mmm,{100},0.81915204,0.57357644 +2,Brass,422,Tetragonal_High 4/mmm,{100},0.81915204,0.57357644 +2,Brass,422,Tetragonal_High 4/mmm,{110},-0.57734412,0.00266416 +2,Brass,422,Tetragonal_High 4/mmm,{110},-0.57734412,0.00266416 +2,Brass,422,Tetragonal_High 4/mmm,{110},0.19495983,0.54343721 +2,Brass,422,Tetragonal_High 4/mmm,{110},0.19495983,0.54343721 +2,Brass,4,Tetragonal_Low 4/m,{001},0.23758314,-0.33930389 +2,Brass,4,Tetragonal_Low 4/m,{001},0.23758314,-0.33930389 +2,Brass,4,Tetragonal_Low 4/m,{100},-0.23758314,0.33930389 +2,Brass,4,Tetragonal_Low 4/m,{100},-0.23758314,0.33930389 +2,Brass,4,Tetragonal_Low 4/m,{100},0.81915204,0.57357644 +2,Brass,4,Tetragonal_Low 4/m,{100},0.81915204,0.57357644 +2,Brass,4,Tetragonal_Low 4/m,{110},-0.57734412,0.00266416 +2,Brass,4,Tetragonal_Low 4/m,{110},-0.57734412,0.00266416 +2,Brass,4,Tetragonal_Low 4/m,{110},0.19495983,0.54343721 +2,Brass,4,Tetragonal_Low 4/m,{110},0.19495983,0.54343721 +2,Brass,222,OrthoRhombic mmm,{001},0.23758314,-0.33930389 +2,Brass,222,OrthoRhombic mmm,{001},0.23758314,-0.33930389 +2,Brass,222,OrthoRhombic mmm,{100},0.81915204,0.57357644 +2,Brass,222,OrthoRhombic mmm,{100},0.81915204,0.57357644 +2,Brass,222,OrthoRhombic mmm,{010},-0.23758314,0.33930389 +2,Brass,222,OrthoRhombic mmm,{010},-0.23758314,0.33930389 +2,Brass,2,Monoclinic 2/m,{001},0.23758314,-0.33930389 +2,Brass,2,Monoclinic 2/m,{001},0.23758314,-0.33930389 +2,Brass,2,Monoclinic 2/m,{100},0.81915204,0.57357644 +2,Brass,2,Monoclinic 2/m,{100},0.81915204,0.57357644 +2,Brass,2,Monoclinic 2/m,{010},-0.23758314,0.33930389 +2,Brass,2,Monoclinic 2/m,{010},-0.23758314,0.33930389 +2,Brass,1,Triclinic -1,{001},0.23758314,-0.33930389 +2,Brass,1,Triclinic -1,{001},0.23758314,-0.33930389 +2,Brass,1,Triclinic -1,{100},0.81915204,0.57357644 +2,Brass,1,Triclinic -1,{100},0.81915204,0.57357644 +2,Brass,1,Triclinic -1,{010},-0.23758314,0.33930389 +2,Brass,1,Triclinic -1,{010},-0.23758314,0.33930389 +3,Copper,432,Cubic_High m-3m,{001},-0.41209184,-0.50307125 +3,Copper,432,Cubic_High m-3m,{001},-0.41209184,-0.50307125 +3,Copper,432,Cubic_High m-3m,{001},-0.41209184,0.50307125 +3,Copper,432,Cubic_High m-3m,{001},-0.41209184,0.50307125 +3,Copper,432,Cubic_High m-3m,{001},0.31529879,0.00000000 +3,Copper,432,Cubic_High m-3m,{001},0.31529879,0.00000000 +3,Copper,432,Cubic_High m-3m,{011},-0.52056705,0.00000000 +3,Copper,432,Cubic_High m-3m,{011},-0.52056705,0.00000000 +3,Copper,432,Cubic_High m-3m,{011},-0.00214159,-0.26795052 +3,Copper,432,Cubic_High m-3m,{011},-0.00214159,-0.26795052 +3,Copper,432,Cubic_High m-3m,{011},-0.00214159,0.26795052 +3,Copper,432,Cubic_High m-3m,{011},-0.00214159,0.26795052 +3,Copper,432,Cubic_High m-3m,{011},0.00000000,1.00000000 +3,Copper,432,Cubic_High m-3m,{011},0.00000000,1.00000000 +3,Copper,432,Cubic_High m-3m,{011},0.63071088,-0.38686523 +3,Copper,432,Cubic_High m-3m,{011},0.63071088,-0.38686523 +3,Copper,432,Cubic_High m-3m,{011},0.63071088,0.38686523 +3,Copper,432,Cubic_High m-3m,{011},0.63071088,0.38686523 +3,Copper,432,Cubic_High m-3m,{111},-0.17394897,-0.00000000 +3,Copper,432,Cubic_High m-3m,{111},-0.17394897,-0.00000000 +3,Copper,432,Cubic_High m-3m,{111},0.22482588,-0.55433207 +3,Copper,432,Cubic_High m-3m,{111},0.22482588,-0.55433207 +3,Copper,432,Cubic_High m-3m,{111},0.22482588,0.55433207 +3,Copper,432,Cubic_High m-3m,{111},0.22482588,0.55433207 +3,Copper,432,Cubic_High m-3m,{111},0.99539614,-0.00000000 +3,Copper,432,Cubic_High m-3m,{111},0.99539614,0.00000000 +3,Copper,23,Cubic_Low m-3,{001},-0.41209184,-0.50307125 +3,Copper,23,Cubic_Low m-3,{001},-0.41209184,-0.50307125 +3,Copper,23,Cubic_Low m-3,{001},-0.41209184,0.50307125 +3,Copper,23,Cubic_Low m-3,{001},-0.41209184,0.50307125 +3,Copper,23,Cubic_Low m-3,{001},0.31529879,0.00000000 +3,Copper,23,Cubic_Low m-3,{001},0.31529879,0.00000000 +3,Copper,23,Cubic_Low m-3,{011},-0.52056705,0.00000000 +3,Copper,23,Cubic_Low m-3,{011},-0.52056705,0.00000000 +3,Copper,23,Cubic_Low m-3,{011},-0.00214159,-0.26795052 +3,Copper,23,Cubic_Low m-3,{011},-0.00214159,-0.26795052 +3,Copper,23,Cubic_Low m-3,{011},-0.00214159,0.26795052 +3,Copper,23,Cubic_Low m-3,{011},-0.00214159,0.26795052 +3,Copper,23,Cubic_Low m-3,{011},0.00000000,1.00000000 +3,Copper,23,Cubic_Low m-3,{011},0.00000000,1.00000000 +3,Copper,23,Cubic_Low m-3,{011},0.63071088,-0.38686523 +3,Copper,23,Cubic_Low m-3,{011},0.63071088,-0.38686523 +3,Copper,23,Cubic_Low m-3,{011},0.63071088,0.38686523 +3,Copper,23,Cubic_Low m-3,{011},0.63071088,0.38686523 +3,Copper,23,Cubic_Low m-3,{111},-0.17394897,-0.00000000 +3,Copper,23,Cubic_Low m-3,{111},-0.17394897,-0.00000000 +3,Copper,23,Cubic_Low m-3,{111},0.22482588,-0.55433207 +3,Copper,23,Cubic_Low m-3,{111},0.22482588,-0.55433207 +3,Copper,23,Cubic_Low m-3,{111},0.22482588,0.55433207 +3,Copper,23,Cubic_Low m-3,{111},0.22482588,0.55433207 +3,Copper,23,Cubic_Low m-3,{111},0.99539614,-0.00000000 +3,Copper,23,Cubic_Low m-3,{111},0.99539614,-0.00000000 +3,Copper,622,Hexagonal_High 6/mmm,{0001},0.31529879,-0.00000000 +3,Copper,622,Hexagonal_High 6/mmm,{0001},0.31529879,-0.00000000 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.50915294,-0.16654676 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.50915294,-0.16654676 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.41209184,0.50307125 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.41209184,0.50307125 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.18460681,-0.84106728 +3,Copper,622,Hexagonal_High 6/mmm,{10-10},-0.18460681,-0.84106728 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.50915294,0.16654676 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.50915294,0.16654676 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.41209184,-0.50307125 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.41209184,-0.50307125 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.18460681,0.84106728 +3,Copper,622,Hexagonal_High 6/mmm,{11-20},-0.18460681,0.84106728 +3,Copper,6,Hexagonal_Low 6/m,{0001},0.31529879,-0.00000000 +3,Copper,6,Hexagonal_Low 6/m,{0001},0.31529879,-0.00000000 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.50915294,-0.16654676 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.50915294,-0.16654676 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.41209184,0.50307125 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.41209184,0.50307125 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.18460681,-0.84106728 +3,Copper,6,Hexagonal_Low 6/m,{10-10},-0.18460681,-0.84106728 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.50915294,0.16654676 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.50915294,0.16654676 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.41209184,-0.50307125 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.41209184,-0.50307125 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.18460681,0.84106728 +3,Copper,6,Hexagonal_Low 6/m,{11-20},-0.18460681,0.84106728 +3,Copper,32,Trigonal_High -3m,{0001},0.31529879,-0.00000000 +3,Copper,32,Trigonal_High -3m,{0001},0.31529879,-0.00000000 +3,Copper,32,Trigonal_High -3m,{0-110},-0.50915294,-0.16654676 +3,Copper,32,Trigonal_High -3m,{0-110},-0.50915294,-0.16654676 +3,Copper,32,Trigonal_High -3m,{0-110},-0.41209184,0.50307125 +3,Copper,32,Trigonal_High -3m,{0-110},-0.41209184,0.50307125 +3,Copper,32,Trigonal_High -3m,{0-110},-0.18460681,-0.84106728 +3,Copper,32,Trigonal_High -3m,{0-110},-0.18460681,-0.84106728 +3,Copper,32,Trigonal_High -3m,{1-100},-0.50915294,-0.16654676 +3,Copper,32,Trigonal_High -3m,{1-100},-0.50915294,-0.16654676 +3,Copper,32,Trigonal_High -3m,{1-100},-0.41209184,0.50307125 +3,Copper,32,Trigonal_High -3m,{1-100},-0.41209184,0.50307125 +3,Copper,32,Trigonal_High -3m,{1-100},-0.18460681,-0.84106728 +3,Copper,32,Trigonal_High -3m,{1-100},-0.18460681,-0.84106728 +3,Copper,3,Trigonal_Low -3,{0001},0.31529879,-0.00000000 +3,Copper,3,Trigonal_Low -3,{0001},0.31529879,-0.00000000 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.50915294,0.16654676 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.50915294,0.16654676 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.41209184,-0.50307125 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.41209184,-0.50307125 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.18460681,0.84106728 +3,Copper,3,Trigonal_Low -3,{-1-120},-0.18460681,0.84106728 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.50915294,0.16654676 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.50915294,0.16654676 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.41209184,-0.50307125 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.41209184,-0.50307125 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.18460681,0.84106728 +3,Copper,3,Trigonal_Low -3,{2-1-10},-0.18460681,0.84106728 +3,Copper,422,Tetragonal_High 4/mmm,{001},0.31529879,0.00000000 +3,Copper,422,Tetragonal_High 4/mmm,{001},0.31529879,0.00000000 +3,Copper,422,Tetragonal_High 4/mmm,{100},-0.41209184,-0.50307125 +3,Copper,422,Tetragonal_High 4/mmm,{100},-0.41209184,-0.50307125 +3,Copper,422,Tetragonal_High 4/mmm,{100},-0.41209184,0.50307125 +3,Copper,422,Tetragonal_High 4/mmm,{100},-0.41209184,0.50307125 +3,Copper,422,Tetragonal_High 4/mmm,{110},-0.52056705,-0.00000000 +3,Copper,422,Tetragonal_High 4/mmm,{110},-0.52056705,-0.00000000 +3,Copper,422,Tetragonal_High 4/mmm,{110},-0.00000000,1.00000000 +3,Copper,422,Tetragonal_High 4/mmm,{110},-0.00000000,1.00000000 +3,Copper,4,Tetragonal_Low 4/m,{001},0.31529879,0.00000000 +3,Copper,4,Tetragonal_Low 4/m,{001},0.31529879,0.00000000 +3,Copper,4,Tetragonal_Low 4/m,{100},-0.41209184,-0.50307125 +3,Copper,4,Tetragonal_Low 4/m,{100},-0.41209184,-0.50307125 +3,Copper,4,Tetragonal_Low 4/m,{100},-0.41209184,0.50307125 +3,Copper,4,Tetragonal_Low 4/m,{100},-0.41209184,0.50307125 +3,Copper,4,Tetragonal_Low 4/m,{110},-0.52056705,-0.00000000 +3,Copper,4,Tetragonal_Low 4/m,{110},-0.52056705,-0.00000000 +3,Copper,4,Tetragonal_Low 4/m,{110},0.00000000,-1.00000000 +3,Copper,4,Tetragonal_Low 4/m,{110},-0.00000000,-1.00000000 +3,Copper,222,OrthoRhombic mmm,{001},0.31529879,0.00000000 +3,Copper,222,OrthoRhombic mmm,{001},0.31529879,0.00000000 +3,Copper,222,OrthoRhombic mmm,{100},-0.41209184,0.50307125 +3,Copper,222,OrthoRhombic mmm,{100},-0.41209184,0.50307125 +3,Copper,222,OrthoRhombic mmm,{010},-0.41209184,-0.50307125 +3,Copper,222,OrthoRhombic mmm,{010},-0.41209184,-0.50307125 +3,Copper,2,Monoclinic 2/m,{001},0.31529879,0.00000000 +3,Copper,2,Monoclinic 2/m,{001},0.31529879,0.00000000 +3,Copper,2,Monoclinic 2/m,{100},-0.41209184,0.50307125 +3,Copper,2,Monoclinic 2/m,{100},-0.41209184,0.50307125 +3,Copper,2,Monoclinic 2/m,{010},-0.41209184,-0.50307125 +3,Copper,2,Monoclinic 2/m,{010},-0.41209184,-0.50307125 +3,Copper,1,Triclinic -1,{001},0.31529879,0.00000000 +3,Copper,1,Triclinic -1,{001},0.31529879,0.00000000 +3,Copper,1,Triclinic -1,{100},-0.41209184,0.50307125 +3,Copper,1,Triclinic -1,{100},-0.41209184,0.50307125 +3,Copper,1,Triclinic -1,{010},-0.41209184,-0.50307125 +3,Copper,1,Triclinic -1,{010},-0.41209184,-0.50307125 +4,S,432,Cubic_High m-3m,{001},-0.60452159,-0.45318449 +4,S,432,Cubic_High m-3m,{001},-0.60452159,-0.45318449 +4,S,432,Cubic_High m-3m,{001},-0.24484029,0.49188327 +4,S,432,Cubic_High m-3m,{001},-0.24484029,0.49188327 +4,S,432,Cubic_High m-3m,{001},0.28680417,-0.17232933 +4,S,432,Cubic_High m-3m,{001},0.28680417,-0.17232933 +4,S,432,Cubic_High m-3m,{011},-0.51528578,0.08033568 +4,S,432,Cubic_High m-3m,{011},-0.51528578,0.08033568 +4,S,432,Cubic_High m-3m,{011},-0.10210173,-0.35677249 +4,S,432,Cubic_High m-3m,{011},-0.10210173,-0.35677249 +4,S,432,Cubic_High m-3m,{011},0.05082713,0.16212166 +4,S,432,Cubic_High m-3m,{011},0.05082713,0.16212166 +4,S,432,Cubic_High m-3m,{011},0.23465019,0.79455715 +4,S,432,Cubic_High m-3m,{011},0.23465019,0.79455715 +4,S,432,Cubic_High m-3m,{011},0.53201127,-0.63556087 +4,S,432,Cubic_High m-3m,{011},0.53201127,-0.63556087 +4,S,432,Cubic_High m-3m,{011},0.66277774,0.13767834 +4,S,432,Cubic_High m-3m,{011},0.66277774,0.13767834 +4,S,432,Cubic_High m-3m,{111},-0.95342022,0.28034255 +4,S,432,Cubic_High m-3m,{111},-0.95342022,0.28034255 +4,S,432,Cubic_High m-3m,{111},-0.18860386,-0.03931558 +4,S,432,Cubic_High m-3m,{111},-0.18860386,-0.03931558 +4,S,432,Cubic_High m-3m,{111},0.05393038,-0.72435237 +4,S,432,Cubic_High m-3m,{111},0.05393038,-0.72435237 +4,S,432,Cubic_High m-3m,{111},0.32552487,0.36607030 +4,S,432,Cubic_High m-3m,{111},0.32552487,0.36607030 +4,S,23,Cubic_Low m-3,{001},-0.60452159,-0.45318449 +4,S,23,Cubic_Low m-3,{001},-0.60452159,-0.45318449 +4,S,23,Cubic_Low m-3,{001},-0.24484029,0.49188327 +4,S,23,Cubic_Low m-3,{001},-0.24484029,0.49188327 +4,S,23,Cubic_Low m-3,{001},0.28680417,-0.17232933 +4,S,23,Cubic_Low m-3,{001},0.28680417,-0.17232933 +4,S,23,Cubic_Low m-3,{011},-0.51528578,0.08033568 +4,S,23,Cubic_Low m-3,{011},-0.51528578,0.08033568 +4,S,23,Cubic_Low m-3,{011},-0.10210173,-0.35677249 +4,S,23,Cubic_Low m-3,{011},-0.10210173,-0.35677249 +4,S,23,Cubic_Low m-3,{011},0.05082713,0.16212166 +4,S,23,Cubic_Low m-3,{011},0.05082713,0.16212166 +4,S,23,Cubic_Low m-3,{011},0.23465019,0.79455715 +4,S,23,Cubic_Low m-3,{011},0.23465019,0.79455715 +4,S,23,Cubic_Low m-3,{011},0.53201127,-0.63556087 +4,S,23,Cubic_Low m-3,{011},0.53201127,-0.63556087 +4,S,23,Cubic_Low m-3,{011},0.66277774,0.13767834 +4,S,23,Cubic_Low m-3,{011},0.66277774,0.13767834 +4,S,23,Cubic_Low m-3,{111},-0.95342022,0.28034255 +4,S,23,Cubic_Low m-3,{111},-0.95342022,0.28034255 +4,S,23,Cubic_Low m-3,{111},-0.18860386,-0.03931558 +4,S,23,Cubic_Low m-3,{111},-0.18860386,-0.03931558 +4,S,23,Cubic_Low m-3,{111},0.05393038,-0.72435237 +4,S,23,Cubic_Low m-3,{111},0.05393038,-0.72435237 +4,S,23,Cubic_Low m-3,{111},0.32552487,0.36607030 +4,S,23,Cubic_Low m-3,{111},0.32552487,0.36607030 +4,S,622,Hexagonal_High 6/mmm,{0001},0.28680417,-0.17232933 +4,S,622,Hexagonal_High 6/mmm,{0001},0.28680417,-0.17232933 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.56796689,-0.08099711 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.56796689,-0.08099711 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.24484029,0.49188327 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.24484029,0.49188327 +4,S,622,Hexagonal_High 6/mmm,{10-10},0.46389385,0.85072490 +4,S,622,Hexagonal_High 6/mmm,{10-10},0.46389385,0.85072490 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.60452159,-0.45318449 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.60452159,-0.45318449 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.44383848,0.22854812 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.44383848,0.22854812 +4,S,622,Hexagonal_High 6/mmm,{11-20},0.04451583,0.71014161 +4,S,622,Hexagonal_High 6/mmm,{11-20},0.04451583,0.71014161 +4,S,6,Hexagonal_Low 6/m,{0001},0.28680417,-0.17232933 +4,S,6,Hexagonal_Low 6/m,{0001},0.28680417,-0.17232933 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.56796689,-0.08099711 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.56796689,-0.08099711 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.24484029,0.49188327 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.24484029,0.49188327 +4,S,6,Hexagonal_Low 6/m,{10-10},0.46389385,0.85072490 +4,S,6,Hexagonal_Low 6/m,{10-10},0.46389385,0.85072490 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.60452159,-0.45318449 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.60452159,-0.45318449 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.44383848,0.22854812 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.44383848,0.22854812 +4,S,6,Hexagonal_Low 6/m,{11-20},0.04451583,0.71014161 +4,S,6,Hexagonal_Low 6/m,{11-20},0.04451583,0.71014161 +4,S,32,Trigonal_High -3m,{0001},0.28680417,-0.17232933 +4,S,32,Trigonal_High -3m,{0001},0.28680417,-0.17232933 +4,S,32,Trigonal_High -3m,{0-110},-0.56796689,-0.08099711 +4,S,32,Trigonal_High -3m,{0-110},-0.56796689,-0.08099711 +4,S,32,Trigonal_High -3m,{0-110},-0.24484029,0.49188327 +4,S,32,Trigonal_High -3m,{0-110},-0.24484029,0.49188327 +4,S,32,Trigonal_High -3m,{0-110},0.46389385,0.85072490 +4,S,32,Trigonal_High -3m,{0-110},0.46389385,0.85072490 +4,S,32,Trigonal_High -3m,{1-100},-0.56796689,-0.08099711 +4,S,32,Trigonal_High -3m,{1-100},-0.56796689,-0.08099711 +4,S,32,Trigonal_High -3m,{1-100},-0.24484029,0.49188327 +4,S,32,Trigonal_High -3m,{1-100},-0.24484029,0.49188327 +4,S,32,Trigonal_High -3m,{1-100},0.46389385,0.85072490 +4,S,32,Trigonal_High -3m,{1-100},0.46389385,0.85072490 +4,S,3,Trigonal_Low -3,{0001},0.28680417,-0.17232933 +4,S,3,Trigonal_Low -3,{0001},0.28680417,-0.17232933 +4,S,3,Trigonal_Low -3,{-1-120},-0.60452159,-0.45318449 +4,S,3,Trigonal_Low -3,{-1-120},-0.60452159,-0.45318449 +4,S,3,Trigonal_Low -3,{-1-120},-0.44383848,0.22854812 +4,S,3,Trigonal_Low -3,{-1-120},-0.44383848,0.22854812 +4,S,3,Trigonal_Low -3,{-1-120},0.04451583,0.71014161 +4,S,3,Trigonal_Low -3,{-1-120},0.04451583,0.71014161 +4,S,3,Trigonal_Low -3,{2-1-10},-0.60452159,-0.45318449 +4,S,3,Trigonal_Low -3,{2-1-10},-0.60452159,-0.45318449 +4,S,3,Trigonal_Low -3,{2-1-10},-0.44383848,0.22854812 +4,S,3,Trigonal_Low -3,{2-1-10},-0.44383848,0.22854812 +4,S,3,Trigonal_Low -3,{2-1-10},0.04451583,0.71014161 +4,S,3,Trigonal_Low -3,{2-1-10},0.04451583,0.71014161 +4,S,422,Tetragonal_High 4/mmm,{001},0.28680417,-0.17232933 +4,S,422,Tetragonal_High 4/mmm,{001},0.28680417,-0.17232933 +4,S,422,Tetragonal_High 4/mmm,{100},-0.60452159,-0.45318449 +4,S,422,Tetragonal_High 4/mmm,{100},-0.60452159,-0.45318449 +4,S,422,Tetragonal_High 4/mmm,{100},-0.24484029,0.49188327 +4,S,422,Tetragonal_High 4/mmm,{100},-0.24484029,0.49188327 +4,S,422,Tetragonal_High 4/mmm,{110},-0.51528578,0.08033568 +4,S,422,Tetragonal_High 4/mmm,{110},-0.51528578,0.08033568 +4,S,422,Tetragonal_High 4/mmm,{110},0.23465019,0.79455715 +4,S,422,Tetragonal_High 4/mmm,{110},0.23465019,0.79455715 +4,S,4,Tetragonal_Low 4/m,{001},0.28680417,-0.17232933 +4,S,4,Tetragonal_Low 4/m,{001},0.28680417,-0.17232933 +4,S,4,Tetragonal_Low 4/m,{100},-0.60452159,-0.45318449 +4,S,4,Tetragonal_Low 4/m,{100},-0.60452159,-0.45318449 +4,S,4,Tetragonal_Low 4/m,{100},-0.24484029,0.49188327 +4,S,4,Tetragonal_Low 4/m,{100},-0.24484029,0.49188327 +4,S,4,Tetragonal_Low 4/m,{110},-0.51528578,0.08033568 +4,S,4,Tetragonal_Low 4/m,{110},-0.51528578,0.08033568 +4,S,4,Tetragonal_Low 4/m,{110},0.23465019,0.79455715 +4,S,4,Tetragonal_Low 4/m,{110},0.23465019,0.79455715 +4,S,222,OrthoRhombic mmm,{001},0.28680417,-0.17232933 +4,S,222,OrthoRhombic mmm,{001},0.28680417,-0.17232933 +4,S,222,OrthoRhombic mmm,{100},-0.24484029,0.49188327 +4,S,222,OrthoRhombic mmm,{100},-0.24484029,0.49188327 +4,S,222,OrthoRhombic mmm,{010},-0.60452159,-0.45318449 +4,S,222,OrthoRhombic mmm,{010},-0.60452159,-0.45318449 +4,S,2,Monoclinic 2/m,{001},0.28680417,-0.17232933 +4,S,2,Monoclinic 2/m,{001},0.28680417,-0.17232933 +4,S,2,Monoclinic 2/m,{100},-0.24484029,0.49188327 +4,S,2,Monoclinic 2/m,{100},-0.24484029,0.49188327 +4,S,2,Monoclinic 2/m,{010},-0.60452159,-0.45318449 +4,S,2,Monoclinic 2/m,{010},-0.60452159,-0.45318449 +4,S,1,Triclinic -1,{001},0.28680417,-0.17232933 +4,S,1,Triclinic -1,{001},0.28680417,-0.17232933 +4,S,1,Triclinic -1,{100},-0.24484029,0.49188327 +4,S,1,Triclinic -1,{100},-0.24484029,0.49188327 +4,S,1,Triclinic -1,{010},-0.60452159,-0.45318449 +4,S,1,Triclinic -1,{010},-0.60452159,-0.45318449 +5,S1,432,Cubic_High m-3m,{001},-0.67666040,-0.43958718 +5,S1,432,Cubic_High m-3m,{001},-0.67666040,-0.43958718 +5,S1,432,Cubic_High m-3m,{001},-0.27563271,0.54803588 +5,S1,432,Cubic_High m-3m,{001},-0.27563271,0.54803588 +5,S1,432,Cubic_High m-3m,{001},0.21949113,-0.15368934 +5,S1,432,Cubic_High m-3m,{001},0.21949113,-0.15368934 +5,S1,432,Cubic_High m-3m,{011},-0.58699928,0.12695795 +5,S1,432,Cubic_High m-3m,{011},-0.58699928,0.12695795 +5,S1,432,Cubic_High m-3m,{011},-0.16458398,-0.32881732 +5,S1,432,Cubic_High m-3m,{011},-0.16458398,-0.32881732 +5,S1,432,Cubic_High m-3m,{011},0.00330698,0.18643213 +5,S1,432,Cubic_High m-3m,{011},0.00330698,0.18643213 +5,S1,432,Cubic_High m-3m,{011},0.25307574,0.80242128 +5,S1,432,Cubic_High m-3m,{011},0.25307574,0.80242128 +5,S1,432,Cubic_High m-3m,{011},0.44339083,-0.59283977 +5,S1,432,Cubic_High m-3m,{011},0.44339083,-0.59283977 +5,S1,432,Cubic_High m-3m,{011},0.59413370,0.11875112 +5,S1,432,Cubic_High m-3m,{011},0.59413370,0.11875112 +5,S1,432,Cubic_High m-3m,{111},-0.24845851,-0.00701408 +5,S1,432,Cubic_High m-3m,{111},-0.24845851,-0.00701408 +5,S1,432,Cubic_High m-3m,{111},-0.00404551,-0.68569013 +5,S1,432,Cubic_High m-3m,{111},-0.00404551,-0.68569013 +5,S1,432,Cubic_High m-3m,{111},0.29179833,0.36693564 +5,S1,432,Cubic_High m-3m,{111},0.29179833,0.36693564 +5,S1,432,Cubic_High m-3m,{111},0.84285611,-0.28479985 +5,S1,432,Cubic_High m-3m,{111},0.84285611,-0.28479985 +5,S1,23,Cubic_Low m-3,{001},-0.67666040,-0.43958718 +5,S1,23,Cubic_Low m-3,{001},-0.67666040,-0.43958718 +5,S1,23,Cubic_Low m-3,{001},-0.27563271,0.54803588 +5,S1,23,Cubic_Low m-3,{001},-0.27563271,0.54803588 +5,S1,23,Cubic_Low m-3,{001},0.21949113,-0.15368934 +5,S1,23,Cubic_Low m-3,{001},0.21949113,-0.15368934 +5,S1,23,Cubic_Low m-3,{011},-0.58699928,0.12695795 +5,S1,23,Cubic_Low m-3,{011},-0.58699928,0.12695795 +5,S1,23,Cubic_Low m-3,{011},-0.16458398,-0.32881732 +5,S1,23,Cubic_Low m-3,{011},-0.16458398,-0.32881732 +5,S1,23,Cubic_Low m-3,{011},0.00330698,0.18643213 +5,S1,23,Cubic_Low m-3,{011},0.00330698,0.18643213 +5,S1,23,Cubic_Low m-3,{011},0.25307574,0.80242128 +5,S1,23,Cubic_Low m-3,{011},0.25307574,0.80242128 +5,S1,23,Cubic_Low m-3,{011},0.44339083,-0.59283977 +5,S1,23,Cubic_Low m-3,{011},0.44339083,-0.59283977 +5,S1,23,Cubic_Low m-3,{011},0.59413370,0.11875112 +5,S1,23,Cubic_Low m-3,{011},0.59413370,0.11875112 +5,S1,23,Cubic_Low m-3,{111},-0.24845851,-0.00701408 +5,S1,23,Cubic_Low m-3,{111},-0.24845851,-0.00701408 +5,S1,23,Cubic_Low m-3,{111},-0.00404551,-0.68569013 +5,S1,23,Cubic_Low m-3,{111},-0.00404551,-0.68569013 +5,S1,23,Cubic_Low m-3,{111},0.29179833,0.36693564 +5,S1,23,Cubic_Low m-3,{111},0.29179833,0.36693564 +5,S1,23,Cubic_Low m-3,{111},0.84285611,-0.28479985 +5,S1,23,Cubic_Low m-3,{111},0.84285611,-0.28479985 +5,S1,622,Hexagonal_High 6/mmm,{0001},0.21949113,-0.15368934 +5,S1,622,Hexagonal_High 6/mmm,{0001},0.21949113,-0.15368934 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.64565634,-0.04465702 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.64565634,-0.04465702 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.27563271,0.54803588 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.27563271,0.54803588 +5,S1,622,Hexagonal_High 6/mmm,{10-10},0.48828647,0.82344401 +5,S1,622,Hexagonal_High 6/mmm,{10-10},0.48828647,0.82344401 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.67666040,-0.43958718 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.67666040,-0.43958718 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.50510566,0.28265703 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.50510566,0.28265703 +5,S1,622,Hexagonal_High 6/mmm,{11-20},0.04891828,0.74287571 +5,S1,622,Hexagonal_High 6/mmm,{11-20},0.04891828,0.74287571 +5,S1,6,Hexagonal_Low 6/m,{0001},0.21949113,-0.15368934 +5,S1,6,Hexagonal_Low 6/m,{0001},0.21949113,-0.15368934 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.64565634,-0.04465702 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.64565634,-0.04465702 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.27563271,0.54803588 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.27563271,0.54803588 +5,S1,6,Hexagonal_Low 6/m,{10-10},0.48828647,0.82344401 +5,S1,6,Hexagonal_Low 6/m,{10-10},0.48828647,0.82344401 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.67666040,-0.43958718 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.67666040,-0.43958718 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.50510566,0.28265703 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.50510566,0.28265703 +5,S1,6,Hexagonal_Low 6/m,{11-20},0.04891828,0.74287571 +5,S1,6,Hexagonal_Low 6/m,{11-20},0.04891828,0.74287571 +5,S1,32,Trigonal_High -3m,{0001},0.21949113,-0.15368934 +5,S1,32,Trigonal_High -3m,{0001},0.21949113,-0.15368934 +5,S1,32,Trigonal_High -3m,{0-110},-0.64565634,-0.04465702 +5,S1,32,Trigonal_High -3m,{0-110},-0.64565634,-0.04465702 +5,S1,32,Trigonal_High -3m,{0-110},-0.27563271,0.54803588 +5,S1,32,Trigonal_High -3m,{0-110},-0.27563271,0.54803588 +5,S1,32,Trigonal_High -3m,{0-110},0.48828647,0.82344401 +5,S1,32,Trigonal_High -3m,{0-110},0.48828647,0.82344401 +5,S1,32,Trigonal_High -3m,{1-100},-0.64565634,-0.04465702 +5,S1,32,Trigonal_High -3m,{1-100},-0.64565634,-0.04465702 +5,S1,32,Trigonal_High -3m,{1-100},-0.27563271,0.54803588 +5,S1,32,Trigonal_High -3m,{1-100},-0.27563271,0.54803588 +5,S1,32,Trigonal_High -3m,{1-100},0.48828647,0.82344401 +5,S1,32,Trigonal_High -3m,{1-100},0.48828647,0.82344401 +5,S1,3,Trigonal_Low -3,{0001},0.21949113,-0.15368934 +5,S1,3,Trigonal_Low -3,{0001},0.21949113,-0.15368934 +5,S1,3,Trigonal_Low -3,{-1-120},-0.67666040,-0.43958718 +5,S1,3,Trigonal_Low -3,{-1-120},-0.67666040,-0.43958718 +5,S1,3,Trigonal_Low -3,{-1-120},-0.50510566,0.28265703 +5,S1,3,Trigonal_Low -3,{-1-120},-0.50510566,0.28265703 +5,S1,3,Trigonal_Low -3,{-1-120},0.04891828,0.74287571 +5,S1,3,Trigonal_Low -3,{-1-120},0.04891828,0.74287571 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.67666040,-0.43958718 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.67666040,-0.43958718 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.50510566,0.28265703 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.50510566,0.28265703 +5,S1,3,Trigonal_Low -3,{2-1-10},0.04891828,0.74287571 +5,S1,3,Trigonal_Low -3,{2-1-10},0.04891828,0.74287571 +5,S1,422,Tetragonal_High 4/mmm,{001},0.21949113,-0.15368934 +5,S1,422,Tetragonal_High 4/mmm,{001},0.21949113,-0.15368934 +5,S1,422,Tetragonal_High 4/mmm,{100},-0.67666040,-0.43958718 +5,S1,422,Tetragonal_High 4/mmm,{100},-0.67666040,-0.43958718 +5,S1,422,Tetragonal_High 4/mmm,{100},-0.27563271,0.54803588 +5,S1,422,Tetragonal_High 4/mmm,{100},-0.27563271,0.54803588 +5,S1,422,Tetragonal_High 4/mmm,{110},-0.58699928,0.12695795 +5,S1,422,Tetragonal_High 4/mmm,{110},-0.58699928,0.12695795 +5,S1,422,Tetragonal_High 4/mmm,{110},0.25307574,0.80242128 +5,S1,422,Tetragonal_High 4/mmm,{110},0.25307574,0.80242128 +5,S1,4,Tetragonal_Low 4/m,{001},0.21949113,-0.15368934 +5,S1,4,Tetragonal_Low 4/m,{001},0.21949113,-0.15368934 +5,S1,4,Tetragonal_Low 4/m,{100},-0.67666040,-0.43958718 +5,S1,4,Tetragonal_Low 4/m,{100},-0.67666040,-0.43958718 +5,S1,4,Tetragonal_Low 4/m,{100},-0.27563271,0.54803588 +5,S1,4,Tetragonal_Low 4/m,{100},-0.27563271,0.54803588 +5,S1,4,Tetragonal_Low 4/m,{110},-0.58699928,0.12695795 +5,S1,4,Tetragonal_Low 4/m,{110},-0.58699928,0.12695795 +5,S1,4,Tetragonal_Low 4/m,{110},0.25307574,0.80242128 +5,S1,4,Tetragonal_Low 4/m,{110},0.25307574,0.80242128 +5,S1,222,OrthoRhombic mmm,{001},0.21949113,-0.15368934 +5,S1,222,OrthoRhombic mmm,{001},0.21949113,-0.15368934 +5,S1,222,OrthoRhombic mmm,{100},-0.27563271,0.54803588 +5,S1,222,OrthoRhombic mmm,{100},-0.27563271,0.54803588 +5,S1,222,OrthoRhombic mmm,{010},-0.67666040,-0.43958718 +5,S1,222,OrthoRhombic mmm,{010},-0.67666040,-0.43958718 +5,S1,2,Monoclinic 2/m,{001},0.21949113,-0.15368934 +5,S1,2,Monoclinic 2/m,{001},0.21949113,-0.15368934 +5,S1,2,Monoclinic 2/m,{100},-0.27563271,0.54803588 +5,S1,2,Monoclinic 2/m,{100},-0.27563271,0.54803588 +5,S1,2,Monoclinic 2/m,{010},-0.67666040,-0.43958718 +5,S1,2,Monoclinic 2/m,{010},-0.67666040,-0.43958718 +5,S1,1,Triclinic -1,{001},0.21949113,-0.15368934 +5,S1,1,Triclinic -1,{001},0.21949113,-0.15368934 +5,S1,1,Triclinic -1,{100},-0.27563271,0.54803588 +5,S1,1,Triclinic -1,{100},-0.27563271,0.54803588 +5,S1,1,Triclinic -1,{010},-0.67666040,-0.43958718 +5,S1,1,Triclinic -1,{010},-0.67666040,-0.43958718 +6,S2,432,Cubic_High m-3m,{001},-0.71285088,-0.31878850 +6,S2,432,Cubic_High m-3m,{001},-0.71285088,-0.31878850 +6,S2,432,Cubic_High m-3m,{001},-0.14878083,0.54202863 +6,S2,432,Cubic_High m-3m,{001},-0.14878083,0.54202863 +6,S2,432,Cubic_High m-3m,{001},0.22294991,-0.22294991 +6,S2,432,Cubic_High m-3m,{001},0.22294991,-0.22294991 +6,S2,432,Cubic_High m-3m,{011},-0.51081767,0.19652653 +6,S2,432,Cubic_High m-3m,{011},-0.51081767,0.19652653 +6,S2,432,Cubic_High m-3m,{011},-0.19390695,-0.32379584 +6,S2,432,Cubic_High m-3m,{011},-0.19390695,-0.32379584 +6,S2,432,Cubic_High m-3m,{011},0.06518126,0.15190139 +6,S2,432,Cubic_High m-3m,{011},0.06518126,0.15190139 +6,S2,432,Cubic_High m-3m,{011},0.36865582,-0.71745210 +6,S2,432,Cubic_High m-3m,{011},0.36865582,-0.71745210 +6,S2,432,Cubic_High m-3m,{011},0.38987231,0.72110759 +6,S2,432,Cubic_High m-3m,{011},0.38987231,0.72110759 +6,S2,432,Cubic_High m-3m,{011},0.64854511,-0.00477946 +6,S2,432,Cubic_High m-3m,{011},0.64854511,-0.00477946 +6,S2,432,Cubic_High m-3m,{111},-0.21312918,0.00668525 +6,S2,432,Cubic_High m-3m,{111},-0.21312918,0.00668525 +6,S2,432,Cubic_High m-3m,{111},-0.11168515,-0.71486516 +6,S2,432,Cubic_High m-3m,{111},-0.11168515,-0.71486516 +6,S2,432,Cubic_High m-3m,{111},0.37654403,0.28786998 +6,S2,432,Cubic_High m-3m,{111},0.37654403,0.28786998 +6,S2,432,Cubic_High m-3m,{111},0.84817392,-0.46580681 +6,S2,432,Cubic_High m-3m,{111},0.84817392,-0.46580681 +6,S2,23,Cubic_Low m-3,{001},-0.71285088,-0.31878850 +6,S2,23,Cubic_Low m-3,{001},-0.71285088,-0.31878850 +6,S2,23,Cubic_Low m-3,{001},-0.14878083,0.54202863 +6,S2,23,Cubic_Low m-3,{001},-0.14878083,0.54202863 +6,S2,23,Cubic_Low m-3,{001},0.22294991,-0.22294991 +6,S2,23,Cubic_Low m-3,{001},0.22294991,-0.22294991 +6,S2,23,Cubic_Low m-3,{011},-0.51081767,0.19652653 +6,S2,23,Cubic_Low m-3,{011},-0.51081767,0.19652653 +6,S2,23,Cubic_Low m-3,{011},-0.19390695,-0.32379584 +6,S2,23,Cubic_Low m-3,{011},-0.19390695,-0.32379584 +6,S2,23,Cubic_Low m-3,{011},0.06518126,0.15190139 +6,S2,23,Cubic_Low m-3,{011},0.06518126,0.15190139 +6,S2,23,Cubic_Low m-3,{011},0.36865582,-0.71745210 +6,S2,23,Cubic_Low m-3,{011},0.36865582,-0.71745210 +6,S2,23,Cubic_Low m-3,{011},0.38987231,0.72110759 +6,S2,23,Cubic_Low m-3,{011},0.38987231,0.72110759 +6,S2,23,Cubic_Low m-3,{011},0.64854511,-0.00477946 +6,S2,23,Cubic_Low m-3,{011},0.64854511,-0.00477946 +6,S2,23,Cubic_Low m-3,{111},-0.21312918,0.00668525 +6,S2,23,Cubic_Low m-3,{111},-0.21312918,0.00668525 +6,S2,23,Cubic_Low m-3,{111},-0.11168515,-0.71486516 +6,S2,23,Cubic_Low m-3,{111},-0.11168515,-0.71486516 +6,S2,23,Cubic_Low m-3,{111},0.37654403,0.28786998 +6,S2,23,Cubic_Low m-3,{111},0.37654403,0.28786998 +6,S2,23,Cubic_Low m-3,{111},0.84817392,-0.46580681 +6,S2,23,Cubic_Low m-3,{111},0.84817392,-0.46580681 +6,S2,622,Hexagonal_High 6/mmm,{0001},0.22294991,-0.22294991 +6,S2,622,Hexagonal_High 6/mmm,{0001},0.22294991,-0.22294991 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.59873985,0.04687292 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.59873985,0.04687292 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.14878083,0.54202863 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.14878083,0.54202863 +6,S2,622,Hexagonal_High 6/mmm,{10-10},0.62279896,0.71895801 +6,S2,622,Hexagonal_High 6/mmm,{10-10},0.62279896,0.71895801 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.71285088,-0.31878850 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.71285088,-0.31878850 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.40642406,0.32798615 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.40642406,0.32798615 +6,S2,622,Hexagonal_High 6/mmm,{11-20},0.18585277,0.68582873 +6,S2,622,Hexagonal_High 6/mmm,{11-20},0.18585277,0.68582873 +6,S2,6,Hexagonal_Low 6/m,{0001},0.22294991,-0.22294991 +6,S2,6,Hexagonal_Low 6/m,{0001},0.22294991,-0.22294991 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.59873985,0.04687292 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.59873985,0.04687292 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.14878083,0.54202863 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.14878083,0.54202863 +6,S2,6,Hexagonal_Low 6/m,{10-10},0.62279896,0.71895801 +6,S2,6,Hexagonal_Low 6/m,{10-10},0.62279896,0.71895801 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.71285088,-0.31878850 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.71285088,-0.31878850 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.40642406,0.32798615 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.40642406,0.32798615 +6,S2,6,Hexagonal_Low 6/m,{11-20},0.18585277,0.68582873 +6,S2,6,Hexagonal_Low 6/m,{11-20},0.18585277,0.68582873 +6,S2,32,Trigonal_High -3m,{0001},0.22294991,-0.22294991 +6,S2,32,Trigonal_High -3m,{0001},0.22294991,-0.22294991 +6,S2,32,Trigonal_High -3m,{0-110},-0.59873985,0.04687292 +6,S2,32,Trigonal_High -3m,{0-110},-0.59873985,0.04687292 +6,S2,32,Trigonal_High -3m,{0-110},-0.14878083,0.54202863 +6,S2,32,Trigonal_High -3m,{0-110},-0.14878083,0.54202863 +6,S2,32,Trigonal_High -3m,{0-110},0.62279896,0.71895801 +6,S2,32,Trigonal_High -3m,{0-110},0.62279896,0.71895801 +6,S2,32,Trigonal_High -3m,{1-100},-0.59873985,0.04687292 +6,S2,32,Trigonal_High -3m,{1-100},-0.59873985,0.04687292 +6,S2,32,Trigonal_High -3m,{1-100},-0.14878083,0.54202863 +6,S2,32,Trigonal_High -3m,{1-100},-0.14878083,0.54202863 +6,S2,32,Trigonal_High -3m,{1-100},0.62279896,0.71895801 +6,S2,32,Trigonal_High -3m,{1-100},0.62279896,0.71895801 +6,S2,3,Trigonal_Low -3,{0001},0.22294991,-0.22294991 +6,S2,3,Trigonal_Low -3,{0001},0.22294991,-0.22294991 +6,S2,3,Trigonal_Low -3,{-1-120},-0.71285088,-0.31878850 +6,S2,3,Trigonal_Low -3,{-1-120},-0.71285088,-0.31878850 +6,S2,3,Trigonal_Low -3,{-1-120},-0.40642406,0.32798615 +6,S2,3,Trigonal_Low -3,{-1-120},-0.40642406,0.32798615 +6,S2,3,Trigonal_Low -3,{-1-120},0.18585277,0.68582873 +6,S2,3,Trigonal_Low -3,{-1-120},0.18585277,0.68582873 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.71285088,-0.31878850 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.71285088,-0.31878850 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.40642406,0.32798615 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.40642406,0.32798615 +6,S2,3,Trigonal_Low -3,{2-1-10},0.18585277,0.68582873 +6,S2,3,Trigonal_Low -3,{2-1-10},0.18585277,0.68582873 +6,S2,422,Tetragonal_High 4/mmm,{001},0.22294991,-0.22294991 +6,S2,422,Tetragonal_High 4/mmm,{001},0.22294991,-0.22294991 +6,S2,422,Tetragonal_High 4/mmm,{100},-0.71285088,-0.31878850 +6,S2,422,Tetragonal_High 4/mmm,{100},-0.71285088,-0.31878850 +6,S2,422,Tetragonal_High 4/mmm,{100},-0.14878083,0.54202863 +6,S2,422,Tetragonal_High 4/mmm,{100},-0.14878083,0.54202863 +6,S2,422,Tetragonal_High 4/mmm,{110},-0.51081767,0.19652653 +6,S2,422,Tetragonal_High 4/mmm,{110},-0.51081767,0.19652653 +6,S2,422,Tetragonal_High 4/mmm,{110},0.38987231,0.72110759 +6,S2,422,Tetragonal_High 4/mmm,{110},0.38987231,0.72110759 +6,S2,4,Tetragonal_Low 4/m,{001},0.22294991,-0.22294991 +6,S2,4,Tetragonal_Low 4/m,{001},0.22294991,-0.22294991 +6,S2,4,Tetragonal_Low 4/m,{100},-0.71285088,-0.31878850 +6,S2,4,Tetragonal_Low 4/m,{100},-0.71285088,-0.31878850 +6,S2,4,Tetragonal_Low 4/m,{100},-0.14878083,0.54202863 +6,S2,4,Tetragonal_Low 4/m,{100},-0.14878083,0.54202863 +6,S2,4,Tetragonal_Low 4/m,{110},-0.51081767,0.19652653 +6,S2,4,Tetragonal_Low 4/m,{110},-0.51081767,0.19652653 +6,S2,4,Tetragonal_Low 4/m,{110},0.38987231,0.72110759 +6,S2,4,Tetragonal_Low 4/m,{110},0.38987231,0.72110759 +6,S2,222,OrthoRhombic mmm,{001},0.22294991,-0.22294991 +6,S2,222,OrthoRhombic mmm,{001},0.22294991,-0.22294991 +6,S2,222,OrthoRhombic mmm,{100},-0.14878083,0.54202863 +6,S2,222,OrthoRhombic mmm,{100},-0.14878083,0.54202863 +6,S2,222,OrthoRhombic mmm,{010},-0.71285088,-0.31878850 +6,S2,222,OrthoRhombic mmm,{010},-0.71285088,-0.31878850 +6,S2,2,Monoclinic 2/m,{001},0.22294991,-0.22294991 +6,S2,2,Monoclinic 2/m,{001},0.22294991,-0.22294991 +6,S2,2,Monoclinic 2/m,{100},-0.14878083,0.54202863 +6,S2,2,Monoclinic 2/m,{100},-0.14878083,0.54202863 +6,S2,2,Monoclinic 2/m,{010},-0.71285088,-0.31878850 +6,S2,2,Monoclinic 2/m,{010},-0.71285088,-0.31878850 +6,S2,1,Triclinic -1,{001},0.22294991,-0.22294991 +6,S2,1,Triclinic -1,{001},0.22294991,-0.22294991 +6,S2,1,Triclinic -1,{100},-0.14878083,0.54202863 +6,S2,1,Triclinic -1,{100},-0.14878083,0.54202863 +6,S2,1,Triclinic -1,{010},-0.71285088,-0.31878850 +6,S2,1,Triclinic -1,{010},-0.71285088,-0.31878850 +7,R,432,Cubic_High m-3m,{001},-0.23170848,-0.11285166 +7,R,432,Cubic_High m-3m,{001},-0.23170848,-0.11285166 +7,R,432,Cubic_High m-3m,{001},0.30551848,0.57174576 +7,R,432,Cubic_High m-3m,{001},0.30551848,0.57174576 +7,R,432,Cubic_High m-3m,{001},0.62855747,-0.44012068 +7,R,432,Cubic_High m-3m,{001},0.62855747,-0.44012068 +7,R,432,Cubic_High m-3m,{011},-0.60359455,0.16859556 +7,R,432,Cubic_High m-3m,{011},-0.60359455,0.16859556 +7,R,432,Cubic_High m-3m,{011},-0.45964639,-0.54043574 +7,R,432,Cubic_High m-3m,{011},-0.45964639,-0.54043574 +7,R,432,Cubic_High m-3m,{011},-0.23087789,0.86925308 +7,R,432,Cubic_High m-3m,{011},-0.23087789,0.86925308 +7,R,432,Cubic_High m-3m,{011},-0.00159962,0.21998851 +7,R,432,Cubic_High m-3m,{011},-0.00159962,0.21998851 +7,R,432,Cubic_High m-3m,{011},0.13996224,-0.30044719 +7,R,432,Cubic_High m-3m,{011},0.13996224,-0.30044719 +7,R,432,Cubic_High m-3m,{011},0.58689557,0.12065358 +7,R,432,Cubic_High m-3m,{011},0.58689557,0.12065358 +7,R,432,Cubic_High m-3m,{111},-0.85342957,-0.23847956 +7,R,432,Cubic_High m-3m,{111},-0.85342957,-0.23847956 +7,R,432,Cubic_High m-3m,{111},-0.28857146,0.41624290 +7,R,432,Cubic_High m-3m,{111},-0.28857146,0.41624290 +7,R,432,Cubic_High m-3m,{111},-0.02992118,-0.63904393 +7,R,432,Cubic_High m-3m,{111},-0.02992118,-0.63904393 +7,R,432,Cubic_High m-3m,{111},0.24031798,0.01205228 +7,R,432,Cubic_High m-3m,{111},0.24031798,0.01205228 +7,R,23,Cubic_Low m-3,{001},-0.23170848,-0.11285166 +7,R,23,Cubic_Low m-3,{001},-0.23170848,-0.11285166 +7,R,23,Cubic_Low m-3,{001},0.30551848,0.57174576 +7,R,23,Cubic_Low m-3,{001},0.30551848,0.57174576 +7,R,23,Cubic_Low m-3,{001},0.62855747,-0.44012068 +7,R,23,Cubic_Low m-3,{001},0.62855747,-0.44012068 +7,R,23,Cubic_Low m-3,{011},-0.60359455,0.16859556 +7,R,23,Cubic_Low m-3,{011},-0.60359455,0.16859556 +7,R,23,Cubic_Low m-3,{011},-0.45964639,-0.54043574 +7,R,23,Cubic_Low m-3,{011},-0.45964639,-0.54043574 +7,R,23,Cubic_Low m-3,{011},-0.23087789,0.86925308 +7,R,23,Cubic_Low m-3,{011},-0.23087789,0.86925308 +7,R,23,Cubic_Low m-3,{011},-0.00159962,0.21998851 +7,R,23,Cubic_Low m-3,{011},-0.00159962,0.21998851 +7,R,23,Cubic_Low m-3,{011},0.13996224,-0.30044719 +7,R,23,Cubic_Low m-3,{011},0.13996224,-0.30044719 +7,R,23,Cubic_Low m-3,{011},0.58689557,0.12065358 +7,R,23,Cubic_Low m-3,{011},0.58689557,0.12065358 +7,R,23,Cubic_Low m-3,{111},-0.85342957,-0.23847956 +7,R,23,Cubic_Low m-3,{111},-0.85342957,-0.23847956 +7,R,23,Cubic_Low m-3,{111},-0.28857146,0.41624290 +7,R,23,Cubic_Low m-3,{111},-0.28857146,0.41624290 +7,R,23,Cubic_Low m-3,{111},-0.02992118,-0.63904393 +7,R,23,Cubic_Low m-3,{111},-0.02992118,-0.63904393 +7,R,23,Cubic_Low m-3,{111},0.24031798,0.01205228 +7,R,23,Cubic_Low m-3,{111},0.24031798,0.01205228 +7,R,622,Hexagonal_High 6/mmm,{0001},0.62855747,-0.44012068 +7,R,622,Hexagonal_High 6/mmm,{0001},0.62855747,-0.44012068 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.38059150,-0.37699423 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.38059150,-0.37699423 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.08215818,0.11174997 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.08215818,0.11174997 +7,R,622,Hexagonal_High 6/mmm,{10-10},0.30551848,0.57174576 +7,R,622,Hexagonal_High 6/mmm,{10-10},0.30551848,0.57174576 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.54406891,-0.74073678 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.54406891,-0.74073678 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.23170848,-0.11285166 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.23170848,-0.11285166 +7,R,622,Hexagonal_High 6/mmm,{11-20},0.08671073,0.33019107 +7,R,622,Hexagonal_High 6/mmm,{11-20},0.08671073,0.33019107 +7,R,6,Hexagonal_Low 6/m,{0001},0.62855747,-0.44012068 +7,R,6,Hexagonal_Low 6/m,{0001},0.62855747,-0.44012068 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.38059150,-0.37699423 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.38059150,-0.37699423 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.08215818,0.11174997 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.08215818,0.11174997 +7,R,6,Hexagonal_Low 6/m,{10-10},0.30551848,0.57174576 +7,R,6,Hexagonal_Low 6/m,{10-10},0.30551848,0.57174576 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.54406891,-0.74073678 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.54406891,-0.74073678 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.23170848,-0.11285166 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.23170848,-0.11285166 +7,R,6,Hexagonal_Low 6/m,{11-20},0.08671073,0.33019107 +7,R,6,Hexagonal_Low 6/m,{11-20},0.08671073,0.33019107 +7,R,32,Trigonal_High -3m,{0001},0.62855747,-0.44012068 +7,R,32,Trigonal_High -3m,{0001},0.62855747,-0.44012068 +7,R,32,Trigonal_High -3m,{0-110},-0.38059150,-0.37699423 +7,R,32,Trigonal_High -3m,{0-110},-0.38059150,-0.37699423 +7,R,32,Trigonal_High -3m,{0-110},-0.08215818,0.11174997 +7,R,32,Trigonal_High -3m,{0-110},-0.08215818,0.11174997 +7,R,32,Trigonal_High -3m,{0-110},0.30551848,0.57174576 +7,R,32,Trigonal_High -3m,{0-110},0.30551848,0.57174576 +7,R,32,Trigonal_High -3m,{1-100},-0.38059150,-0.37699423 +7,R,32,Trigonal_High -3m,{1-100},-0.38059150,-0.37699423 +7,R,32,Trigonal_High -3m,{1-100},-0.08215818,0.11174997 +7,R,32,Trigonal_High -3m,{1-100},-0.08215818,0.11174997 +7,R,32,Trigonal_High -3m,{1-100},0.30551848,0.57174576 +7,R,32,Trigonal_High -3m,{1-100},0.30551848,0.57174576 +7,R,3,Trigonal_Low -3,{0001},0.62855747,-0.44012068 +7,R,3,Trigonal_Low -3,{0001},0.62855747,-0.44012068 +7,R,3,Trigonal_Low -3,{-1-120},-0.54406891,-0.74073678 +7,R,3,Trigonal_Low -3,{-1-120},-0.54406891,-0.74073678 +7,R,3,Trigonal_Low -3,{-1-120},-0.23170848,-0.11285166 +7,R,3,Trigonal_Low -3,{-1-120},-0.23170848,-0.11285166 +7,R,3,Trigonal_Low -3,{-1-120},0.08671073,0.33019107 +7,R,3,Trigonal_Low -3,{-1-120},0.08671073,0.33019107 +7,R,3,Trigonal_Low -3,{2-1-10},-0.54406891,-0.74073678 +7,R,3,Trigonal_Low -3,{2-1-10},-0.54406891,-0.74073678 +7,R,3,Trigonal_Low -3,{2-1-10},-0.23170848,-0.11285166 +7,R,3,Trigonal_Low -3,{2-1-10},-0.23170848,-0.11285166 +7,R,3,Trigonal_Low -3,{2-1-10},0.08671073,0.33019107 +7,R,3,Trigonal_Low -3,{2-1-10},0.08671073,0.33019107 +7,R,422,Tetragonal_High 4/mmm,{001},0.62855747,-0.44012068 +7,R,422,Tetragonal_High 4/mmm,{001},0.62855747,-0.44012068 +7,R,422,Tetragonal_High 4/mmm,{100},-0.23170848,-0.11285166 +7,R,422,Tetragonal_High 4/mmm,{100},-0.23170848,-0.11285166 +7,R,422,Tetragonal_High 4/mmm,{100},0.30551848,0.57174576 +7,R,422,Tetragonal_High 4/mmm,{100},0.30551848,0.57174576 +7,R,422,Tetragonal_High 4/mmm,{110},-0.45964639,-0.54043574 +7,R,422,Tetragonal_High 4/mmm,{110},-0.45964639,-0.54043574 +7,R,422,Tetragonal_High 4/mmm,{110},-0.00159962,0.21998851 +7,R,422,Tetragonal_High 4/mmm,{110},-0.00159962,0.21998851 +7,R,4,Tetragonal_Low 4/m,{001},0.62855747,-0.44012068 +7,R,4,Tetragonal_Low 4/m,{001},0.62855747,-0.44012068 +7,R,4,Tetragonal_Low 4/m,{100},-0.23170848,-0.11285166 +7,R,4,Tetragonal_Low 4/m,{100},-0.23170848,-0.11285166 +7,R,4,Tetragonal_Low 4/m,{100},0.30551848,0.57174576 +7,R,4,Tetragonal_Low 4/m,{100},0.30551848,0.57174576 +7,R,4,Tetragonal_Low 4/m,{110},-0.45964639,-0.54043574 +7,R,4,Tetragonal_Low 4/m,{110},-0.45964639,-0.54043574 +7,R,4,Tetragonal_Low 4/m,{110},-0.00159962,0.21998851 +7,R,4,Tetragonal_Low 4/m,{110},-0.00159962,0.21998851 +7,R,222,OrthoRhombic mmm,{001},0.62855747,-0.44012068 +7,R,222,OrthoRhombic mmm,{001},0.62855747,-0.44012068 +7,R,222,OrthoRhombic mmm,{100},0.30551848,0.57174576 +7,R,222,OrthoRhombic mmm,{100},0.30551848,0.57174576 +7,R,222,OrthoRhombic mmm,{010},-0.23170848,-0.11285166 +7,R,222,OrthoRhombic mmm,{010},-0.23170848,-0.11285166 +7,R,2,Monoclinic 2/m,{001},0.62855747,-0.44012068 +7,R,2,Monoclinic 2/m,{001},0.62855747,-0.44012068 +7,R,2,Monoclinic 2/m,{100},0.30551848,0.57174576 +7,R,2,Monoclinic 2/m,{100},0.30551848,0.57174576 +7,R,2,Monoclinic 2/m,{010},-0.23170848,-0.11285166 +7,R,2,Monoclinic 2/m,{010},-0.23170848,-0.11285166 +7,R,1,Triclinic -1,{001},0.62855747,-0.44012068 +7,R,1,Triclinic -1,{001},0.62855747,-0.44012068 +7,R,1,Triclinic -1,{100},0.30551848,0.57174576 +7,R,1,Triclinic -1,{100},0.30551848,0.57174576 +7,R,1,Triclinic -1,{010},-0.23170848,-0.11285166 +7,R,1,Triclinic -1,{010},-0.23170848,-0.11285166 +8,RC_rd1,432,Cubic_High m-3m,{001},-0.00000000,-0.17632698 +8,RC_rd1,432,Cubic_High m-3m,{001},-0.00000000,-0.17632698 +8,RC_rd1,432,Cubic_High m-3m,{001},0.00000000,0.70020754 +8,RC_rd1,432,Cubic_High m-3m,{001},0.00000000,0.70020754 +8,RC_rd1,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +8,RC_rd1,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.56940030,0.53506126 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.56940030,0.53506126 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.42482577,-0.14529897 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.42482577,-0.14529897 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.00000000,-0.63707026 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.00000000,-0.63707026 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.00000000,0.22169466 +8,RC_rd1,432,Cubic_High m-3m,{011},-0.00000000,0.22169466 +8,RC_rd1,432,Cubic_High m-3m,{011},0.42482577,-0.14529897 +8,RC_rd1,432,Cubic_High m-3m,{011},0.42482577,-0.14529897 +8,RC_rd1,432,Cubic_High m-3m,{011},0.56940030,0.53506126 +8,RC_rd1,432,Cubic_High m-3m,{011},0.56940030,0.53506126 +8,RC_rd1,432,Cubic_High m-3m,{111},-0.42923553,-0.55015665 +8,RC_rd1,432,Cubic_High m-3m,{111},-0.42923553,-0.55015665 +8,RC_rd1,432,Cubic_High m-3m,{111},-0.33181103,0.19831432 +8,RC_rd1,432,Cubic_High m-3m,{111},-0.33181103,0.19831432 +8,RC_rd1,432,Cubic_High m-3m,{111},0.33181103,0.19831432 +8,RC_rd1,432,Cubic_High m-3m,{111},0.33181103,0.19831432 +8,RC_rd1,432,Cubic_High m-3m,{111},0.42923553,-0.55015665 +8,RC_rd1,432,Cubic_High m-3m,{111},0.42923553,-0.55015665 +8,RC_rd1,23,Cubic_Low m-3,{001},-0.00000000,-0.17632698 +8,RC_rd1,23,Cubic_Low m-3,{001},-0.00000000,-0.17632698 +8,RC_rd1,23,Cubic_Low m-3,{001},0.00000000,0.70020754 +8,RC_rd1,23,Cubic_Low m-3,{001},0.00000000,0.70020754 +8,RC_rd1,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +8,RC_rd1,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.56940030,0.53506126 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.56940030,0.53506126 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.42482577,-0.14529897 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.42482577,-0.14529897 +8,RC_rd1,23,Cubic_Low m-3,{011},0.00000000,-0.63707026 +8,RC_rd1,23,Cubic_Low m-3,{011},0.00000000,-0.63707026 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.00000000,0.22169466 +8,RC_rd1,23,Cubic_Low m-3,{011},-0.00000000,0.22169466 +8,RC_rd1,23,Cubic_Low m-3,{011},0.42482577,-0.14529897 +8,RC_rd1,23,Cubic_Low m-3,{011},0.42482577,-0.14529897 +8,RC_rd1,23,Cubic_Low m-3,{011},0.56940030,0.53506126 +8,RC_rd1,23,Cubic_Low m-3,{011},0.56940030,0.53506126 +8,RC_rd1,23,Cubic_Low m-3,{111},-0.42923553,-0.55015665 +8,RC_rd1,23,Cubic_Low m-3,{111},-0.42923553,-0.55015665 +8,RC_rd1,23,Cubic_Low m-3,{111},-0.33181103,0.19831432 +8,RC_rd1,23,Cubic_Low m-3,{111},-0.33181103,0.19831432 +8,RC_rd1,23,Cubic_Low m-3,{111},0.33181103,0.19831432 +8,RC_rd1,23,Cubic_Low m-3,{111},0.33181103,0.19831432 +8,RC_rd1,23,Cubic_Low m-3,{111},0.42923553,-0.55015665 +8,RC_rd1,23,Cubic_Low m-3,{111},0.42923553,-0.55015665 +8,RC_rd1,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.17632698 +8,RC_rd1,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.17632698 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},-0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},-0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.70020754 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.70020754 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.17632698 +8,RC_rd1,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.17632698 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},-0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},-0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.70020754 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.70020754 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{0001},-0.00000000,-0.17632698 +8,RC_rd1,32,Trigonal_High -3m,{0001},-0.00000000,-0.17632698 +8,RC_rd1,32,Trigonal_High -3m,{0-110},-0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{0-110},-0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{0-110},0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{0-110},0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +8,RC_rd1,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +8,RC_rd1,32,Trigonal_High -3m,{1-100},-0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{1-100},-0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.38574350,0.62783433 +8,RC_rd1,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +8,RC_rd1,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +8,RC_rd1,3,Trigonal_Low -3,{0001},-0.00000000,-0.17632698 +8,RC_rd1,3,Trigonal_Low -3,{0001},-0.00000000,-0.17632698 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},-0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},-0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.00000000,0.70020754 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.00000000,0.70020754 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.00000000,0.70020754 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.00000000,0.70020754 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.73955419,0.40123166 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.73955419,0.40123166 +8,RC_rd1,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.17632698 +8,RC_rd1,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.17632698 +8,RC_rd1,422,Tetragonal_High 4/mmm,{100},0.00000000,0.70020754 +8,RC_rd1,422,Tetragonal_High 4/mmm,{100},0.00000000,0.70020754 +8,RC_rd1,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +8,RC_rd1,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +8,RC_rd1,422,Tetragonal_High 4/mmm,{110},-0.56940030,0.53506126 +8,RC_rd1,422,Tetragonal_High 4/mmm,{110},-0.56940030,0.53506126 +8,RC_rd1,422,Tetragonal_High 4/mmm,{110},0.56940030,0.53506126 +8,RC_rd1,422,Tetragonal_High 4/mmm,{110},0.56940030,0.53506126 +8,RC_rd1,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.17632698 +8,RC_rd1,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.17632698 +8,RC_rd1,4,Tetragonal_Low 4/m,{100},0.00000000,0.70020754 +8,RC_rd1,4,Tetragonal_Low 4/m,{100},0.00000000,0.70020754 +8,RC_rd1,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +8,RC_rd1,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +8,RC_rd1,4,Tetragonal_Low 4/m,{110},-0.56940030,0.53506126 +8,RC_rd1,4,Tetragonal_Low 4/m,{110},-0.56940030,0.53506126 +8,RC_rd1,4,Tetragonal_Low 4/m,{110},0.56940030,0.53506126 +8,RC_rd1,4,Tetragonal_Low 4/m,{110},0.56940030,0.53506126 +8,RC_rd1,222,OrthoRhombic mmm,{001},-0.00000000,-0.17632698 +8,RC_rd1,222,OrthoRhombic mmm,{001},-0.00000000,-0.17632698 +8,RC_rd1,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +8,RC_rd1,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +8,RC_rd1,222,OrthoRhombic mmm,{010},-0.00000000,0.70020754 +8,RC_rd1,222,OrthoRhombic mmm,{010},-0.00000000,0.70020754 +8,RC_rd1,2,Monoclinic 2/m,{001},-0.00000000,-0.17632698 +8,RC_rd1,2,Monoclinic 2/m,{001},-0.00000000,-0.17632698 +8,RC_rd1,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +8,RC_rd1,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +8,RC_rd1,2,Monoclinic 2/m,{010},-0.00000000,0.70020754 +8,RC_rd1,2,Monoclinic 2/m,{010},-0.00000000,0.70020754 +8,RC_rd1,1,Triclinic -1,{001},-0.00000000,-0.17632698 +8,RC_rd1,1,Triclinic -1,{001},-0.00000000,-0.17632698 +8,RC_rd1,1,Triclinic -1,{100},1.00000000,0.00000000 +8,RC_rd1,1,Triclinic -1,{100},1.00000000,0.00000000 +8,RC_rd1,1,Triclinic -1,{010},-0.00000000,0.70020754 +8,RC_rd1,1,Triclinic -1,{010},-0.00000000,0.70020754 +9,RC_rd2,432,Cubic_High m-3m,{001},0.00000000,-0.31529879 +9,RC_rd2,432,Cubic_High m-3m,{001},0.00000000,-0.31529879 +9,RC_rd2,432,Cubic_High m-3m,{001},-0.00000000,0.52056705 +9,RC_rd2,432,Cubic_High m-3m,{001},-0.00000000,0.52056705 +9,RC_rd2,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +9,RC_rd2,432,Cubic_High m-3m,{001},1.00000000,0.00000000 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.50307125,0.41209184 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.50307125,0.41209184 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.44775472,-0.25682156 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.44775472,-0.25682156 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.00000000,-0.83909963 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.00000000,-0.83909963 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.00000000,0.08748866 +9,RC_rd2,432,Cubic_High m-3m,{011},-0.00000000,0.08748866 +9,RC_rd2,432,Cubic_High m-3m,{011},0.44775472,-0.25682156 +9,RC_rd2,432,Cubic_High m-3m,{011},0.44775472,-0.25682156 +9,RC_rd2,432,Cubic_High m-3m,{011},0.50307125,0.41209184 +9,RC_rd2,432,Cubic_High m-3m,{011},0.50307125,0.41209184 +9,RC_rd2,432,Cubic_High m-3m,{111},-0.50565668,-0.70424245 +9,RC_rd2,432,Cubic_High m-3m,{111},-0.50565668,-0.70424245 +9,RC_rd2,432,Cubic_High m-3m,{111},-0.32002260,0.07858975 +9,RC_rd2,432,Cubic_High m-3m,{111},-0.32002260,0.07858975 +9,RC_rd2,432,Cubic_High m-3m,{111},0.32002260,0.07858975 +9,RC_rd2,432,Cubic_High m-3m,{111},0.32002260,0.07858975 +9,RC_rd2,432,Cubic_High m-3m,{111},0.50565668,-0.70424245 +9,RC_rd2,432,Cubic_High m-3m,{111},0.50565668,-0.70424245 +9,RC_rd2,23,Cubic_Low m-3,{001},0.00000000,-0.31529879 +9,RC_rd2,23,Cubic_Low m-3,{001},0.00000000,-0.31529879 +9,RC_rd2,23,Cubic_Low m-3,{001},-0.00000000,0.52056705 +9,RC_rd2,23,Cubic_Low m-3,{001},-0.00000000,0.52056705 +9,RC_rd2,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +9,RC_rd2,23,Cubic_Low m-3,{001},1.00000000,0.00000000 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.50307125,0.41209184 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.50307125,0.41209184 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.44775472,-0.25682156 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.44775472,-0.25682156 +9,RC_rd2,23,Cubic_Low m-3,{011},0.00000000,-0.83909963 +9,RC_rd2,23,Cubic_Low m-3,{011},0.00000000,-0.83909963 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.00000000,0.08748866 +9,RC_rd2,23,Cubic_Low m-3,{011},-0.00000000,0.08748866 +9,RC_rd2,23,Cubic_Low m-3,{011},0.44775472,-0.25682156 +9,RC_rd2,23,Cubic_Low m-3,{011},0.44775472,-0.25682156 +9,RC_rd2,23,Cubic_Low m-3,{011},0.50307125,0.41209184 +9,RC_rd2,23,Cubic_Low m-3,{011},0.50307125,0.41209184 +9,RC_rd2,23,Cubic_Low m-3,{111},-0.50565668,-0.70424245 +9,RC_rd2,23,Cubic_Low m-3,{111},-0.50565668,-0.70424245 +9,RC_rd2,23,Cubic_Low m-3,{111},-0.32002260,0.07858975 +9,RC_rd2,23,Cubic_Low m-3,{111},-0.32002260,0.07858975 +9,RC_rd2,23,Cubic_Low m-3,{111},0.32002260,0.07858975 +9,RC_rd2,23,Cubic_Low m-3,{111},0.32002260,0.07858975 +9,RC_rd2,23,Cubic_Low m-3,{111},0.50565668,-0.70424245 +9,RC_rd2,23,Cubic_Low m-3,{111},0.50565668,-0.70424245 +9,RC_rd2,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.31529879 +9,RC_rd2,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.31529879 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},-0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},-0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},1.00000000,0.00000000 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.52056705 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.00000000,0.52056705 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.31529879 +9,RC_rd2,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.31529879 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},-0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},-0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},1.00000000,0.00000000 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.52056705 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.00000000,0.52056705 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{0001},-0.00000000,-0.31529879 +9,RC_rd2,32,Trigonal_High -3m,{0001},-0.00000000,-0.31529879 +9,RC_rd2,32,Trigonal_High -3m,{0-110},-0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{0-110},-0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{0-110},0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{0-110},0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +9,RC_rd2,32,Trigonal_High -3m,{0-110},1.00000000,0.00000000 +9,RC_rd2,32,Trigonal_High -3m,{1-100},-0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{1-100},-0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.33406119,0.47397035 +9,RC_rd2,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +9,RC_rd2,32,Trigonal_High -3m,{1-100},1.00000000,0.00000000 +9,RC_rd2,3,Trigonal_Low -3,{0001},-0.00000000,-0.31529879 +9,RC_rd2,3,Trigonal_Low -3,{0001},-0.00000000,-0.31529879 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.00000000,0.52056705 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.00000000,0.52056705 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.00000000,0.52056705 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.00000000,0.52056705 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},0.67301316,0.31829326 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},0.67301316,0.31829326 +9,RC_rd2,422,Tetragonal_High 4/mmm,{001},0.00000000,-0.31529879 +9,RC_rd2,422,Tetragonal_High 4/mmm,{001},0.00000000,-0.31529879 +9,RC_rd2,422,Tetragonal_High 4/mmm,{100},-0.00000000,0.52056705 +9,RC_rd2,422,Tetragonal_High 4/mmm,{100},-0.00000000,0.52056705 +9,RC_rd2,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +9,RC_rd2,422,Tetragonal_High 4/mmm,{100},1.00000000,0.00000000 +9,RC_rd2,422,Tetragonal_High 4/mmm,{110},-0.50307125,0.41209184 +9,RC_rd2,422,Tetragonal_High 4/mmm,{110},-0.50307125,0.41209184 +9,RC_rd2,422,Tetragonal_High 4/mmm,{110},0.50307125,0.41209184 +9,RC_rd2,422,Tetragonal_High 4/mmm,{110},0.50307125,0.41209184 +9,RC_rd2,4,Tetragonal_Low 4/m,{001},0.00000000,-0.31529879 +9,RC_rd2,4,Tetragonal_Low 4/m,{001},0.00000000,-0.31529879 +9,RC_rd2,4,Tetragonal_Low 4/m,{100},-0.00000000,0.52056705 +9,RC_rd2,4,Tetragonal_Low 4/m,{100},-0.00000000,0.52056705 +9,RC_rd2,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +9,RC_rd2,4,Tetragonal_Low 4/m,{100},1.00000000,0.00000000 +9,RC_rd2,4,Tetragonal_Low 4/m,{110},-0.50307125,0.41209184 +9,RC_rd2,4,Tetragonal_Low 4/m,{110},-0.50307125,0.41209184 +9,RC_rd2,4,Tetragonal_Low 4/m,{110},0.50307125,0.41209184 +9,RC_rd2,4,Tetragonal_Low 4/m,{110},0.50307125,0.41209184 +9,RC_rd2,222,OrthoRhombic mmm,{001},0.00000000,-0.31529879 +9,RC_rd2,222,OrthoRhombic mmm,{001},0.00000000,-0.31529879 +9,RC_rd2,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +9,RC_rd2,222,OrthoRhombic mmm,{100},1.00000000,0.00000000 +9,RC_rd2,222,OrthoRhombic mmm,{010},-0.00000000,0.52056705 +9,RC_rd2,222,OrthoRhombic mmm,{010},-0.00000000,0.52056705 +9,RC_rd2,2,Monoclinic 2/m,{001},0.00000000,-0.31529879 +9,RC_rd2,2,Monoclinic 2/m,{001},0.00000000,-0.31529879 +9,RC_rd2,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +9,RC_rd2,2,Monoclinic 2/m,{100},1.00000000,0.00000000 +9,RC_rd2,2,Monoclinic 2/m,{010},-0.00000000,0.52056705 +9,RC_rd2,2,Monoclinic 2/m,{010},-0.00000000,0.52056705 +9,RC_rd2,1,Triclinic -1,{001},0.00000000,-0.31529879 +9,RC_rd2,1,Triclinic -1,{001},0.00000000,-0.31529879 +9,RC_rd2,1,Triclinic -1,{100},1.00000000,0.00000000 +9,RC_rd2,1,Triclinic -1,{100},1.00000000,0.00000000 +9,RC_rd2,1,Triclinic -1,{010},-0.00000000,0.52056705 +9,RC_rd2,1,Triclinic -1,{010},-0.00000000,0.52056705 +10,RC_nd1,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +10,RC_nd1,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +10,RC_nd1,432,Cubic_High m-3m,{001},0.34202014,-0.93969262 +10,RC_nd1,432,Cubic_High m-3m,{001},0.34202014,-0.93969262 +10,RC_nd1,432,Cubic_High m-3m,{001},0.93969262,0.34202014 +10,RC_nd1,432,Cubic_High m-3m,{001},0.93969262,0.34202014 +10,RC_nd1,432,Cubic_High m-3m,{011},-0.38923343,-0.14166938 +10,RC_nd1,432,Cubic_High m-3m,{011},-0.38923343,-0.14166938 +10,RC_nd1,432,Cubic_High m-3m,{011},-0.14166938,0.38923343 +10,RC_nd1,432,Cubic_High m-3m,{011},-0.14166938,0.38923343 +10,RC_nd1,432,Cubic_High m-3m,{011},0.14166938,-0.38923343 +10,RC_nd1,432,Cubic_High m-3m,{011},0.14166938,-0.38923343 +10,RC_nd1,432,Cubic_High m-3m,{011},0.38923343,0.14166938 +10,RC_nd1,432,Cubic_High m-3m,{011},0.38923343,0.14166938 +10,RC_nd1,432,Cubic_High m-3m,{011},0.42261826,0.90630779 +10,RC_nd1,432,Cubic_High m-3m,{011},0.42261826,0.90630779 +10,RC_nd1,432,Cubic_High m-3m,{011},0.90630779,-0.42261826 +10,RC_nd1,432,Cubic_High m-3m,{011},0.90630779,-0.42261826 +10,RC_nd1,432,Cubic_High m-3m,{111},-0.46913943,0.21876331 +10,RC_nd1,432,Cubic_High m-3m,{111},-0.46913943,0.21876331 +10,RC_nd1,432,Cubic_High m-3m,{111},-0.21876331,-0.46913943 +10,RC_nd1,432,Cubic_High m-3m,{111},-0.21876331,-0.46913943 +10,RC_nd1,432,Cubic_High m-3m,{111},0.21876331,0.46913943 +10,RC_nd1,432,Cubic_High m-3m,{111},0.21876331,0.46913943 +10,RC_nd1,432,Cubic_High m-3m,{111},0.46913943,-0.21876331 +10,RC_nd1,432,Cubic_High m-3m,{111},0.46913943,-0.21876331 +10,RC_nd1,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +10,RC_nd1,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +10,RC_nd1,23,Cubic_Low m-3,{001},0.34202014,-0.93969262 +10,RC_nd1,23,Cubic_Low m-3,{001},0.34202014,-0.93969262 +10,RC_nd1,23,Cubic_Low m-3,{001},0.93969262,0.34202014 +10,RC_nd1,23,Cubic_Low m-3,{001},0.93969262,0.34202014 +10,RC_nd1,23,Cubic_Low m-3,{011},-0.38923343,-0.14166938 +10,RC_nd1,23,Cubic_Low m-3,{011},-0.38923343,-0.14166938 +10,RC_nd1,23,Cubic_Low m-3,{011},-0.14166938,0.38923343 +10,RC_nd1,23,Cubic_Low m-3,{011},-0.14166938,0.38923343 +10,RC_nd1,23,Cubic_Low m-3,{011},0.14166938,-0.38923343 +10,RC_nd1,23,Cubic_Low m-3,{011},0.14166938,-0.38923343 +10,RC_nd1,23,Cubic_Low m-3,{011},0.38923343,0.14166938 +10,RC_nd1,23,Cubic_Low m-3,{011},0.38923343,0.14166938 +10,RC_nd1,23,Cubic_Low m-3,{011},0.42261826,0.90630779 +10,RC_nd1,23,Cubic_Low m-3,{011},0.42261826,0.90630779 +10,RC_nd1,23,Cubic_Low m-3,{011},0.90630779,-0.42261826 +10,RC_nd1,23,Cubic_Low m-3,{011},0.90630779,-0.42261826 +10,RC_nd1,23,Cubic_Low m-3,{111},-0.46913943,0.21876331 +10,RC_nd1,23,Cubic_Low m-3,{111},-0.46913943,0.21876331 +10,RC_nd1,23,Cubic_Low m-3,{111},-0.21876331,-0.46913943 +10,RC_nd1,23,Cubic_Low m-3,{111},-0.21876331,-0.46913943 +10,RC_nd1,23,Cubic_Low m-3,{111},0.21876331,0.46913943 +10,RC_nd1,23,Cubic_Low m-3,{111},0.21876331,0.46913943 +10,RC_nd1,23,Cubic_Low m-3,{111},0.46913943,-0.21876331 +10,RC_nd1,23,Cubic_Low m-3,{111},0.46913943,-0.21876331 +10,RC_nd1,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +10,RC_nd1,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},-0.93969262,-0.34202014 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},-0.17364818,-0.98480775 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.17364818,0.98480775 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.76604444,-0.64278761 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.76604444,-0.64278761 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.93969262,0.34202014 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.98480775,0.17364818 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.64278761,-0.76604444 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.34202014,-0.93969262 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.34202014,-0.93969262 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.64278761,0.76604444 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.98480775,-0.17364818 +10,RC_nd1,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +10,RC_nd1,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},-0.93969262,-0.34202014 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},-0.76604444,0.64278761 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},-0.17364818,-0.98480775 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.17364818,0.98480775 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.76604444,-0.64278761 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.93969262,0.34202014 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.98480775,0.17364818 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.64278761,-0.76604444 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.34202014,0.93969262 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},0.34202014,-0.93969262 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},0.64278761,0.76604444 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},0.98480775,-0.17364818 +10,RC_nd1,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +10,RC_nd1,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +10,RC_nd1,32,Trigonal_High -3m,{0-110},-0.93969262,-0.34202014 +10,RC_nd1,32,Trigonal_High -3m,{0-110},-0.17364818,-0.98480775 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.17364818,0.98480775 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.76604444,-0.64278761 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.76604444,-0.64278761 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.93969262,0.34202014 +10,RC_nd1,32,Trigonal_High -3m,{1-100},-0.76604444,0.64278761 +10,RC_nd1,32,Trigonal_High -3m,{1-100},-0.17364818,-0.98480775 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.17364818,0.98480775 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.76604444,-0.64278761 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.93969262,0.34202014 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.93969262,0.34202014 +10,RC_nd1,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +10,RC_nd1,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.98480775,0.17364818 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.64278761,-0.76604444 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.34202014,0.93969262 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},0.34202014,-0.93969262 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},0.64278761,0.76604444 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},0.98480775,-0.17364818 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.98480775,0.17364818 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.64278761,-0.76604444 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.34202014,0.93969262 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},0.34202014,-0.93969262 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},0.64278761,0.76604444 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},0.98480775,-0.17364818 +10,RC_nd1,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +10,RC_nd1,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +10,RC_nd1,422,Tetragonal_High 4/mmm,{100},-0.93969262,-0.34202014 +10,RC_nd1,422,Tetragonal_High 4/mmm,{100},-0.34202014,0.93969262 +10,RC_nd1,422,Tetragonal_High 4/mmm,{100},0.34202014,-0.93969262 +10,RC_nd1,422,Tetragonal_High 4/mmm,{100},0.93969262,0.34202014 +10,RC_nd1,422,Tetragonal_High 4/mmm,{110},-0.42261826,-0.90630779 +10,RC_nd1,422,Tetragonal_High 4/mmm,{110},0.42261826,0.90630779 +10,RC_nd1,422,Tetragonal_High 4/mmm,{110},0.90630779,-0.42261826 +10,RC_nd1,422,Tetragonal_High 4/mmm,{110},0.90630779,-0.42261826 +10,RC_nd1,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +10,RC_nd1,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +10,RC_nd1,4,Tetragonal_Low 4/m,{100},-0.93969262,-0.34202014 +10,RC_nd1,4,Tetragonal_Low 4/m,{100},-0.34202014,0.93969262 +10,RC_nd1,4,Tetragonal_Low 4/m,{100},0.34202014,-0.93969262 +10,RC_nd1,4,Tetragonal_Low 4/m,{100},0.93969262,0.34202014 +10,RC_nd1,4,Tetragonal_Low 4/m,{110},-0.90630779,0.42261826 +10,RC_nd1,4,Tetragonal_Low 4/m,{110},-0.42261826,-0.90630779 +10,RC_nd1,4,Tetragonal_Low 4/m,{110},0.42261826,0.90630779 +10,RC_nd1,4,Tetragonal_Low 4/m,{110},0.90630779,-0.42261826 +10,RC_nd1,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +10,RC_nd1,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +10,RC_nd1,222,OrthoRhombic mmm,{100},-0.93969262,-0.34202014 +10,RC_nd1,222,OrthoRhombic mmm,{100},0.93969262,0.34202014 +10,RC_nd1,222,OrthoRhombic mmm,{010},-0.34202014,0.93969262 +10,RC_nd1,222,OrthoRhombic mmm,{010},0.34202014,-0.93969262 +10,RC_nd1,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +10,RC_nd1,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +10,RC_nd1,2,Monoclinic 2/m,{100},-0.93969262,-0.34202014 +10,RC_nd1,2,Monoclinic 2/m,{100},0.93969262,0.34202014 +10,RC_nd1,2,Monoclinic 2/m,{010},-0.34202014,0.93969262 +10,RC_nd1,2,Monoclinic 2/m,{010},0.34202014,-0.93969262 +10,RC_nd1,1,Triclinic -1,{001},-0.00000000,-0.00000000 +10,RC_nd1,1,Triclinic -1,{001},-0.00000000,-0.00000000 +10,RC_nd1,1,Triclinic -1,{100},-0.93969262,-0.34202014 +10,RC_nd1,1,Triclinic -1,{100},0.93969262,0.34202014 +10,RC_nd1,1,Triclinic -1,{010},-0.34202014,0.93969262 +10,RC_nd1,1,Triclinic -1,{010},0.34202014,-0.93969262 +11,RC_nd2,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +11,RC_nd2,432,Cubic_High m-3m,{001},-0.00000000,-0.00000000 +11,RC_nd2,432,Cubic_High m-3m,{001},0.57357644,-0.81915204 +11,RC_nd2,432,Cubic_High m-3m,{001},0.57357644,-0.81915204 +11,RC_nd2,432,Cubic_High m-3m,{001},0.81915204,0.57357644 +11,RC_nd2,432,Cubic_High m-3m,{001},0.81915204,0.57357644 +11,RC_nd2,432,Cubic_High m-3m,{011},-0.33930389,-0.23758314 +11,RC_nd2,432,Cubic_High m-3m,{011},-0.33930389,-0.23758314 +11,RC_nd2,432,Cubic_High m-3m,{011},-0.23758314,0.33930389 +11,RC_nd2,432,Cubic_High m-3m,{011},-0.23758314,0.33930389 +11,RC_nd2,432,Cubic_High m-3m,{011},0.17364818,0.98480775 +11,RC_nd2,432,Cubic_High m-3m,{011},0.17364818,0.98480775 +11,RC_nd2,432,Cubic_High m-3m,{011},0.23758314,-0.33930389 +11,RC_nd2,432,Cubic_High m-3m,{011},0.23758314,-0.33930389 +11,RC_nd2,432,Cubic_High m-3m,{011},0.33930389,0.23758314 +11,RC_nd2,432,Cubic_High m-3m,{011},0.33930389,0.23758314 +11,RC_nd2,432,Cubic_High m-3m,{011},0.98480775,-0.17364818 +11,RC_nd2,432,Cubic_High m-3m,{011},0.98480775,-0.17364818 +11,RC_nd2,432,Cubic_High m-3m,{111},-0.50977400,0.08988691 +11,RC_nd2,432,Cubic_High m-3m,{111},-0.50977400,0.08988691 +11,RC_nd2,432,Cubic_High m-3m,{111},-0.08988691,-0.50977400 +11,RC_nd2,432,Cubic_High m-3m,{111},-0.08988691,-0.50977400 +11,RC_nd2,432,Cubic_High m-3m,{111},0.08988691,0.50977400 +11,RC_nd2,432,Cubic_High m-3m,{111},0.08988691,0.50977400 +11,RC_nd2,432,Cubic_High m-3m,{111},0.50977400,-0.08988691 +11,RC_nd2,432,Cubic_High m-3m,{111},0.50977400,-0.08988691 +11,RC_nd2,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +11,RC_nd2,23,Cubic_Low m-3,{001},-0.00000000,-0.00000000 +11,RC_nd2,23,Cubic_Low m-3,{001},0.57357644,-0.81915204 +11,RC_nd2,23,Cubic_Low m-3,{001},0.57357644,-0.81915204 +11,RC_nd2,23,Cubic_Low m-3,{001},0.81915204,0.57357644 +11,RC_nd2,23,Cubic_Low m-3,{001},0.81915204,0.57357644 +11,RC_nd2,23,Cubic_Low m-3,{011},-0.33930389,-0.23758314 +11,RC_nd2,23,Cubic_Low m-3,{011},-0.33930389,-0.23758314 +11,RC_nd2,23,Cubic_Low m-3,{011},-0.23758314,0.33930389 +11,RC_nd2,23,Cubic_Low m-3,{011},-0.23758314,0.33930389 +11,RC_nd2,23,Cubic_Low m-3,{011},0.17364818,0.98480775 +11,RC_nd2,23,Cubic_Low m-3,{011},0.17364818,0.98480775 +11,RC_nd2,23,Cubic_Low m-3,{011},0.23758314,-0.33930389 +11,RC_nd2,23,Cubic_Low m-3,{011},0.23758314,-0.33930389 +11,RC_nd2,23,Cubic_Low m-3,{011},0.33930389,0.23758314 +11,RC_nd2,23,Cubic_Low m-3,{011},0.33930389,0.23758314 +11,RC_nd2,23,Cubic_Low m-3,{011},0.98480775,-0.17364818 +11,RC_nd2,23,Cubic_Low m-3,{011},0.98480775,-0.17364818 +11,RC_nd2,23,Cubic_Low m-3,{111},-0.50977400,0.08988691 +11,RC_nd2,23,Cubic_Low m-3,{111},-0.50977400,0.08988691 +11,RC_nd2,23,Cubic_Low m-3,{111},-0.08988691,-0.50977400 +11,RC_nd2,23,Cubic_Low m-3,{111},-0.08988691,-0.50977400 +11,RC_nd2,23,Cubic_Low m-3,{111},0.08988691,0.50977400 +11,RC_nd2,23,Cubic_Low m-3,{111},0.08988691,0.50977400 +11,RC_nd2,23,Cubic_Low m-3,{111},0.50977400,-0.08988691 +11,RC_nd2,23,Cubic_Low m-3,{111},0.50977400,-0.08988691 +11,RC_nd2,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +11,RC_nd2,622,Hexagonal_High 6/mmm,{0001},-0.00000000,-0.00000000 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},-0.81915204,-0.57357644 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},-0.08715574,0.99619470 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.08715574,-0.99619470 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.81915204,0.57357644 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.90630779,-0.42261826 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.90630779,-0.42261826 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},-0.99619470,-0.08715574 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},-0.42261826,-0.90630779 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.42261826,0.90630779 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.57357644,-0.81915204 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.57357644,-0.81915204 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.99619470,0.08715574 +11,RC_nd2,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +11,RC_nd2,6,Hexagonal_Low 6/m,{0001},-0.00000000,-0.00000000 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},-0.90630779,0.42261826 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},-0.81915204,-0.57357644 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},-0.08715574,0.99619470 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.08715574,-0.99619470 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.81915204,0.57357644 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.90630779,-0.42261826 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},-0.99619470,-0.08715574 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},-0.57357644,0.81915204 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},-0.42261826,-0.90630779 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.42261826,0.90630779 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.57357644,-0.81915204 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.99619470,0.08715574 +11,RC_nd2,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +11,RC_nd2,32,Trigonal_High -3m,{0001},-0.00000000,-0.00000000 +11,RC_nd2,32,Trigonal_High -3m,{0-110},-0.81915204,-0.57357644 +11,RC_nd2,32,Trigonal_High -3m,{0-110},-0.08715574,0.99619470 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.08715574,-0.99619470 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.81915204,0.57357644 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.90630779,-0.42261826 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.90630779,-0.42261826 +11,RC_nd2,32,Trigonal_High -3m,{1-100},-0.90630779,0.42261826 +11,RC_nd2,32,Trigonal_High -3m,{1-100},-0.08715574,0.99619470 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.08715574,-0.99619470 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.81915204,0.57357644 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.81915204,0.57357644 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.90630779,-0.42261826 +11,RC_nd2,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +11,RC_nd2,3,Trigonal_Low -3,{0001},-0.00000000,-0.00000000 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},-0.99619470,-0.08715574 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},-0.57357644,0.81915204 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},-0.42261826,-0.90630779 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.42261826,0.90630779 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.57357644,-0.81915204 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.99619470,0.08715574 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},-0.99619470,-0.08715574 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},-0.57357644,0.81915204 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},-0.42261826,-0.90630779 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.42261826,0.90630779 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.57357644,-0.81915204 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.99619470,0.08715574 +11,RC_nd2,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +11,RC_nd2,422,Tetragonal_High 4/mmm,{001},-0.00000000,-0.00000000 +11,RC_nd2,422,Tetragonal_High 4/mmm,{100},-0.81915204,-0.57357644 +11,RC_nd2,422,Tetragonal_High 4/mmm,{100},-0.57357644,0.81915204 +11,RC_nd2,422,Tetragonal_High 4/mmm,{100},0.57357644,-0.81915204 +11,RC_nd2,422,Tetragonal_High 4/mmm,{100},0.81915204,0.57357644 +11,RC_nd2,422,Tetragonal_High 4/mmm,{110},-0.17364818,-0.98480775 +11,RC_nd2,422,Tetragonal_High 4/mmm,{110},0.17364818,0.98480775 +11,RC_nd2,422,Tetragonal_High 4/mmm,{110},0.98480775,-0.17364818 +11,RC_nd2,422,Tetragonal_High 4/mmm,{110},0.98480775,-0.17364818 +11,RC_nd2,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +11,RC_nd2,4,Tetragonal_Low 4/m,{001},-0.00000000,-0.00000000 +11,RC_nd2,4,Tetragonal_Low 4/m,{100},-0.81915204,-0.57357644 +11,RC_nd2,4,Tetragonal_Low 4/m,{100},-0.57357644,0.81915204 +11,RC_nd2,4,Tetragonal_Low 4/m,{100},0.57357644,-0.81915204 +11,RC_nd2,4,Tetragonal_Low 4/m,{100},0.81915204,0.57357644 +11,RC_nd2,4,Tetragonal_Low 4/m,{110},-0.98480775,0.17364818 +11,RC_nd2,4,Tetragonal_Low 4/m,{110},-0.17364818,-0.98480775 +11,RC_nd2,4,Tetragonal_Low 4/m,{110},0.17364818,0.98480775 +11,RC_nd2,4,Tetragonal_Low 4/m,{110},0.98480775,-0.17364818 +11,RC_nd2,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +11,RC_nd2,222,OrthoRhombic mmm,{001},-0.00000000,-0.00000000 +11,RC_nd2,222,OrthoRhombic mmm,{100},-0.81915204,-0.57357644 +11,RC_nd2,222,OrthoRhombic mmm,{100},0.81915204,0.57357644 +11,RC_nd2,222,OrthoRhombic mmm,{010},-0.57357644,0.81915204 +11,RC_nd2,222,OrthoRhombic mmm,{010},0.57357644,-0.81915204 +11,RC_nd2,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +11,RC_nd2,2,Monoclinic 2/m,{001},-0.00000000,-0.00000000 +11,RC_nd2,2,Monoclinic 2/m,{100},-0.81915204,-0.57357644 +11,RC_nd2,2,Monoclinic 2/m,{100},0.81915204,0.57357644 +11,RC_nd2,2,Monoclinic 2/m,{010},-0.57357644,0.81915204 +11,RC_nd2,2,Monoclinic 2/m,{010},0.57357644,-0.81915204 +11,RC_nd2,1,Triclinic -1,{001},-0.00000000,-0.00000000 +11,RC_nd2,1,Triclinic -1,{001},-0.00000000,-0.00000000 +11,RC_nd2,1,Triclinic -1,{100},-0.81915204,-0.57357644 +11,RC_nd2,1,Triclinic -1,{100},0.81915204,0.57357644 +11,RC_nd2,1,Triclinic -1,{010},-0.57357644,0.81915204 +11,RC_nd2,1,Triclinic -1,{010},0.57357644,-0.81915204 diff --git a/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m b/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m index 462074e1..fa081618 100644 --- a/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m +++ b/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m @@ -69,67 +69,67 @@ laue(end).symName = 'Cubic_High m-3m'; laue(end).cs = crystalSymmetry('m-3m'); laue(end).h = {[0 0 1], [0 1 1], [1 1 1]}; -laue(end).labels = {'<001>', '<011>', '<111>'}; +laue(end).labels = {'{001}', '{011}', '{111}'}; laue(end+1).rpg = '23'; laue(end).symName = 'Cubic_Low m-3'; laue(end).cs = crystalSymmetry('m-3'); laue(end).h = {[0 0 1], [0 1 1], [1 1 1]}; -laue(end).labels = {'<001>', '<011>', '<111>'}; +laue(end).labels = {'{001}', '{011}', '{111}'}; laue(end+1).rpg = '622'; laue(end).symName = 'Hexagonal_High 6/mmm'; laue(end).cs = crystalSymmetry('6/mmm', [1 1 1.6], 'X||a*'); laue(end).h = {[0 0 0 1], [1 0 -1 0], [1 1 -2 0]}; -laue(end).labels = {'<0001>', '<10-10>', '<11-20>'}; +laue(end).labels = {'{0001}', '{10-10}', '{11-20}'}; laue(end+1).rpg = '6'; laue(end).symName = 'Hexagonal_Low 6/m'; laue(end).cs = crystalSymmetry('6/m', [1 1 1.6], 'X||a*'); laue(end).h = {[0 0 0 1], [1 0 -1 0], [1 1 -2 0]}; -laue(end).labels = {'<0001>', '<10-10>', '<11-20>'}; +laue(end).labels = {'{0001}', '{10-10}', '{11-20}'}; laue(end+1).rpg = '32'; laue(end).symName = 'Trigonal_High -3m'; laue(end).cs = crystalSymmetry('-3m', [1 1 1.6], 'X||a*'); laue(end).h = {[0 0 0 1], [0 -1 1 0], [1 -1 0 0]}; -laue(end).labels = {'<0001>', '<0-110>', '<1-100>'}; +laue(end).labels = {'{0001}', '{0-110}', '{1-100}'}; laue(end+1).rpg = '3'; laue(end).symName = 'Trigonal_Low -3'; laue(end).cs = crystalSymmetry('-3', [1 1 1.6], 'X||a*'); laue(end).h = {[0 0 0 1], [-1 -1 2 0], [2 -1 -1 0]}; -laue(end).labels = {'<0001>', '<-1-120>', '<2-1-10>'}; +laue(end).labels = {'{0001}', '{-1-120}', '{2-1-10}'}; laue(end+1).rpg = '422'; laue(end).symName = 'Tetragonal_High 4/mmm'; laue(end).cs = crystalSymmetry('4/mmm'); laue(end).h = {[0 0 1], [1 0 0], [1 1 0]}; -laue(end).labels = {'<001>', '<100>', '<110>'}; +laue(end).labels = {'{001}', '{100}', '{110}'}; laue(end+1).rpg = '4'; laue(end).symName = 'Tetragonal_Low 4/m'; laue(end).cs = crystalSymmetry('4/m'); laue(end).h = {[0 0 1], [1 0 0], [1 1 0]}; -laue(end).labels = {'<001>', '<100>', '<110>'}; +laue(end).labels = {'{001}', '{100}', '{110}'}; laue(end+1).rpg = '222'; laue(end).symName = 'OrthoRhombic mmm'; laue(end).cs = crystalSymmetry('mmm'); laue(end).h = {[0 0 1], [1 0 0], [0 1 0]}; -laue(end).labels = {'<001>', '<100>', '<010>'}; +laue(end).labels = {'{001}', '{100}', '{010}'}; laue(end+1).rpg = '2'; laue(end).symName = 'Monoclinic 2/m'; laue(end).cs = crystalSymmetry('2/m'); laue(end).h = {[0 0 1], [1 0 0], [0 1 0]}; -laue(end).labels = {'<001>', '<100>', '<010>'}; +laue(end).labels = {'{001}', '{100}', '{010}'}; laue(end+1).rpg = '1'; laue(end).symName = 'Triclinic -1'; laue(end).cs = crystalSymmetry('-1'); laue(end).h = {[0 0 1], [1 0 0], [0 1 0]}; -laue(end).labels = {'<001>', '<100>', '<010>'}; +laue(end).labels = {'{001}', '{100}', '{010}'}; % ----------------------------------------------------------------------------- % Open CSV and write header @@ -188,7 +188,7 @@ % (px, py) order so the CSV is byte-stable across MTEX runs. % MTEX's symmetrise() emission order isn't guaranteed stable when % multiple symmetry-equivalent directions hash-collide (we hit - % this in the 622/<11-20> bucket -- same 12 points emitted, but + % this in the 622/{11-20} bucket -- same 12 points emitted, but % the two halves of an antipodal pair swap order between runs). % The PoleFigurePositionTest comparator is order-independent so % the math is unaffected, but sorting here means `git diff` on a diff --git a/Docs/Index.md b/Docs/Index.md index e669fea4..17d27dac 100644 --- a/Docs/Index.md +++ b/Docs/Index.md @@ -1,6 +1,6 @@ # Various Bits of Documentation for EbsdLib -EbsdLib is primarily used in the [DREAM3D](https://www.dream3d.io) family of applications and libraries. +EbsdLib is primarily used in the [DREAM3D](https://www.bluequartz.net) family of applications and libraries. ## Rotation Point Groups diff --git a/README.md b/README.md index 194c6c67..a43f11c3 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ fundamental-zone reduction, **Inverse Pole Figure (IPF) coloring**, It is the crystallographic engine behind the [DREAM.3D](https://dream3d.bluequartz.net) and -[DREAM3D-NX](https://www.dream3d.io) projects. +[DREAM3D-NX](https://www.bluequartz.net) projects. ## Features diff --git a/Source/Apps/SourceList.cmake b/Source/Apps/SourceList.cmake index 5cec6620..4a31c8b8 100644 --- a/Source/Apps/SourceList.cmake +++ b/Source/Apps/SourceList.cmake @@ -76,17 +76,17 @@ set_target_properties(ParseAztecProject PROPERTIES FOLDER EbsdLib_Applications) if(EbsdLib_INSTALL_FILES) install(FILES - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Tetragonal 4_mmm (D4h)//Tetragonal 4_mmm (D4h).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).tiff" - "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).tiff" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Cubic m-3 (Th)/Cubic m-3 (Th).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Cubic m-3m (Oh)/Cubic m-3m (Oh).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Hexagonal 6_m (C6h)/Hexagonal 6_m (C6h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Hexagonal 6_mmm (D6h)/Hexagonal 6_mmm (D6h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Monoclinic 2_m (C2h)/Monoclinic 2_m (C2h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Orthorhombic mmm (D2h)/Orthorhombic mmm (D2h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Tetragonal 4_m (C4h)/Tetragonal 4_m (C4h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Tetragonal 4_mmm (D4h)//Tetragonal 4_mmm (D4h).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Triclinic -1 (Ci)/Triclinic -1 (Ci).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Trigonal -3 (C3i)/Trigonal -3 (C3i).png" + "${EbsdLibProj_SOURCE_DIR}/Data/IPF_Legend/Trigonal -3m (D3d)/Trigonal -3m (D3d).png" DESTINATION share/EbsdLib/Data COMPONENT Headers ) diff --git a/Source/Apps/generate_ipf_density.cpp b/Source/Apps/generate_ipf_density.cpp index 61f48e9f..5bb83c41 100644 --- a/Source/Apps/generate_ipf_density.cpp +++ b/Source/Apps/generate_ipf_density.cpp @@ -174,7 +174,7 @@ void generateIPFForLaueClass(const LaueOps& ops, ebsdlib::FloatArrayType* eulers config.numColors = 64; config.colorMap = "Default"; config.normalizeMRD = true; - config.labels = {"RD", "TD", "ND"}; + config.labels = {"A1", "A2", "A3"}; config.phaseName = className; config.FlipFinalImage = false; @@ -191,11 +191,10 @@ void generateIPFForLaueClass(const LaueOps& ops, ebsdlib::FloatArrayType* eulers } int canvasDim = static_cast(static_cast(imageWidth) * 1.5f); - std::array dirLabels = {"RD", "TD", "ND"}; for(size_t i = 0; i < images.size(); i++) { std::ostringstream filePath; - filePath << outputDir << "/" << safeName << "_IPF_" << dirLabels[i] << "_" << textureLabel << ".png"; + filePath << outputDir << "/" << safeName << "_IPF_" << config.labels[i] << "_" << textureLabel << ".png"; auto result = PngWriter::WriteColorImage(filePath.str(), canvasDim, canvasDim, 3, images[i]->data()); if(result.first < 0) { diff --git a/Source/Apps/generate_ipf_from_file.cpp b/Source/Apps/generate_ipf_from_file.cpp index ce836b1b..1101fd56 100644 --- a/Source/Apps/generate_ipf_from_file.cpp +++ b/Source/Apps/generate_ipf_from_file.cpp @@ -84,7 +84,7 @@ void generateIPFForPhase(const LaueOps& ops, ebsdlib::FloatArrayType* eulers, co config.numColors = 64; config.colorMap = "Default"; config.normalizeMRD = true; - config.labels = {"RD", "TD", "ND"}; + config.labels = {"A1", "A2", "A3"}; config.phaseName = phaseLabel; config.FlipFinalImage = false; @@ -102,11 +102,10 @@ void generateIPFForPhase(const LaueOps& ops, ebsdlib::FloatArrayType* eulers, co // Images are RGB (3 components), canvasDim x canvasDim int canvasDim = static_cast(static_cast(imageWidth) * 1.5f); - std::array dirLabels = {"RD", "TD", "ND"}; for(size_t i = 0; i < images.size(); i++) { std::ostringstream filePath; - filePath << outputDir << "/" << safeName << "_IPF_" << dirLabels[i] << ".png"; + filePath << outputDir << "/" << safeName << "_IPF_" << config.labels[i] << ".png"; auto result = PngWriter::WriteColorImage(filePath.str(), canvasDim, canvasDim, 3, images[i]->data()); if(result.first < 0) { diff --git a/Source/Apps/generate_ipf_legends.cpp b/Source/Apps/generate_ipf_legends.cpp index 32b8a9c5..5a22a6b8 100644 --- a/Source/Apps/generate_ipf_legends.cpp +++ b/Source/Apps/generate_ipf_legends.cpp @@ -344,10 +344,11 @@ void GeneratePoleFigures(LaueOps& ops, int symType) // Read in the Quats File ConvertOrientations convertor; auto outputOrientations = convertor.execute(k_QuatsFilePath, "eulers_000_1_deg.csv", ",", "qu2eu", true); - auto poleFigureNames = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelAStar); + auto poleFigureNames = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelA); PoleFigureConfiguration_t config; config.eulers = outputOrientations.get(); + config.hexConvention = ebsdlib::HexConvention::XParallelA; // TSL/EDAX config.imageDim = 512; config.lambertDim = 72; config.numColors = 32; @@ -423,7 +424,7 @@ void GenerateNolzeHielscherLegends(int imageDim) std::string symName = EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_"); // Generate full-circle NH legend - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/false); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/false); std::stringstream ss; ss << k_Output_Dir << "/" << symName << "/" << symName << "_NH_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); @@ -431,7 +432,7 @@ void GenerateNolzeHielscherLegends(int imageDim) // Generate triangle-only NH legend, cropped per-class to match the TSL // smooth output dimensions (see sstSmoothCropFor() at the top of this file). - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/false); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/false); { SstCropRect crop{}; int outW = imageDim; @@ -452,13 +453,13 @@ void GenerateNolzeHielscherLegends(int imageDim) // Generate gridded NH legends (MTEX-style flat shading, 2000x2000) constexpr int k_GriddedImageDim = 2000; - legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, true, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/true); + legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, true, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/true); ss.str(""); ss << k_Output_Dir << "/" << symName << "/" << symName << "_NH_GRIDDED_FULL.png"; result = PngWriter::WriteColorImage(ss.str(), k_GriddedImageDim, k_GriddedImageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " NH Gridded Full Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, false, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/true); + legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, false, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::NolzeHielscher, /*gridded=*/true); ss.str(""); ss << k_Output_Dir << "/" << symName << "/" << symName << "_NH_GRIDDED.png"; result = PngWriter::WriteColorImage(ss.str(), k_GriddedImageDim, k_GriddedImageDim, 3, legend->getPointer(0)); @@ -470,13 +471,13 @@ void GenerateNolzeHielscherLegends(int imageDim) // key, so there's no external apples-to-apples reference. The Edax // exemplars at /Users/Shared/Data/Edax_IPF_Test/IPF\ PUCM.bmp are the // only third-party PUCM reference we know of. - legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/false); + legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/false); ss.str(""); ss << k_Output_Dir << "/" << symName << "/" << symName << "_PUCM_FULL.png"; result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " PUCM Full Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/false); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/false); { SstCropRect crop{}; int outW = imageDim; @@ -495,13 +496,13 @@ void GenerateNolzeHielscherLegends(int imageDim) std::cout << ops.getSymmetryName() << " PUCM Triangle Result: " << result.first << ": " << result.second << std::endl; } - legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, true, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/true); + legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, true, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/true); ss.str(""); ss << k_Output_Dir << "/" << symName << "/" << symName << "_PUCM_GRIDDED_FULL.png"; result = PngWriter::WriteColorImage(ss.str(), k_GriddedImageDim, k_GriddedImageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " PUCM Gridded Full Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, false, ebsdlib::HexConvention::XParallelAStar, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/true); + legend = ops.generateIPFTriangleLegend(k_GriddedImageDim, false, ebsdlib::HexConvention::XParallelA, ebsdlib::ColorKeyKind::PUCM, /*gridded=*/true); ss.str(""); ss << k_Output_Dir << "/" << symName << "/" << symName << "_PUCM_GRIDDED.png"; result = PngWriter::WriteColorImage(ss.str(), k_GriddedImageDim, k_GriddedImageDim, 3, legend->getPointer(0)); @@ -522,17 +523,25 @@ int main(int argc, char* argv[]) std::filesystem::create_directories(ss.str()); } + const std::string outputRoot = std::filesystem::absolute(k_Output_Dir).string(); + std::cout << "=====================================================================\n" + << " generate_ipf_legends\n" + << " Hex/Trig convention: X||a (TSL/EDAX)\n" + << " Output directory (one subfolder per Laue class):\n" + << " " << outputRoot << "\n" + << "=====================================================================" << std::endl; + std::stringstream ss; int imageDim = 1500; { TrigonalOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int xStart = imageDim * 0.05F; int yStart = 0; int numCols = imageDim * 0.75F; @@ -560,13 +569,13 @@ int main(int argc, char* argv[]) { TriclinicOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << ".png"; result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); @@ -589,13 +598,13 @@ int main(int argc, char* argv[]) { MonoclinicOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int yCropped = imageDim * 0.6F; legend = ebsdlib::CropRGBImage(legend, imageDim, imageDim, 0, 0, imageDim, yCropped); ss.str(""); @@ -621,13 +630,13 @@ int main(int argc, char* argv[]) { CubicLowOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << ".png"; result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); @@ -650,13 +659,13 @@ int main(int argc, char* argv[]) { CubicOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << ".png"; result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); @@ -679,7 +688,7 @@ int main(int argc, char* argv[]) { OrthoRhombicOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); @@ -689,7 +698,7 @@ int main(int argc, char* argv[]) int yStart = 0; int numCols = imageDim * 0.78F; int numRows = imageDim * 0.6F; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); legend = ebsdlib::CropRGBImage(legend, imageDim, imageDim, xStart, yStart, numCols, numRows); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << ".png"; @@ -713,7 +722,7 @@ int main(int argc, char* argv[]) { TetragonalOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; @@ -724,7 +733,7 @@ int main(int argc, char* argv[]) int yStart = 0; int numCols = imageDim * 0.78F; int numRows = imageDim * 0.6F; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); legend = ebsdlib::CropRGBImage(legend, imageDim, imageDim, xStart, yStart, numCols, numRows); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << ".png"; @@ -748,13 +757,13 @@ int main(int argc, char* argv[]) { TetragonalLowOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int xStart = imageDim * 0.10F; int yStart = 0; int numCols = imageDim * 0.70F; @@ -782,13 +791,13 @@ int main(int argc, char* argv[]) { HexagonalOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int xStart = imageDim * 0.10F; int yStart = 0; int numCols = imageDim * 0.80F; @@ -816,13 +825,13 @@ int main(int argc, char* argv[]) { HexagonalLowOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int xStart = imageDim * 0.10F; int yStart = 0; int numCols = imageDim * 0.70F; @@ -850,13 +859,13 @@ int main(int argc, char* argv[]) { TrigonalLowOps ops; - auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelAStar); + auto legend = ops.generateIPFTriangleLegend(imageDim, true, ebsdlib::HexConvention::XParallelA); ss.str(""); ss << k_Output_Dir << ops.getSymmetryName() << "/" << EbsdStringUtils::replace(ops.getSymmetryName(), "/", "_") << "_FULL.png"; auto result = PngWriter::WriteColorImage(ss.str(), imageDim, imageDim, 3, legend->getPointer(0)); std::cout << ops.getSymmetryName() << " Result: " << result.first << ": " << result.second << std::endl; - legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelAStar); + legend = ops.generateIPFTriangleLegend(imageDim, false, ebsdlib::HexConvention::XParallelA); int xStart = imageDim * 0.00F; int yStart = 0; int numCols = imageDim * 0.90F; @@ -884,5 +893,6 @@ int main(int argc, char* argv[]) GenerateNolzeHielscherLegends(imageDim); + std::cout << "\nDone. All IPF legends and pole figures were written under:\n " << outputRoot << std::endl; return 0; } diff --git a/Source/Apps/make_pole_figure.cpp b/Source/Apps/make_pole_figure.cpp index c5a63c24..ffe73f06 100644 --- a/Source/Apps/make_pole_figure.cpp +++ b/Source/Apps/make_pole_figure.cpp @@ -315,7 +315,7 @@ int main(int argc, char* argv[]) config.title = pd.phaseName + " (" + op->getSymmetryName() + ")"; auto pfNames = op->getDefaultPoleFigureNames(config.hexConvention); - config.labels = {pfNames[0], pfNames[1], pfNames[2]}; + config.poleFigureNames = {pfNames[0], pfNames[1], pfNames[2]}; config.order = {0, 1, 2}; std::cout << std::endl; diff --git a/Source/Apps/render_ebsd.cpp b/Source/Apps/render_ebsd.cpp index 9c4a7f96..8e5f392a 100644 --- a/Source/Apps/render_ebsd.cpp +++ b/Source/Apps/render_ebsd.cpp @@ -16,7 +16,7 @@ * * Usage: * render_ebsd - * [--convention {x_a, x_astar}] (default x_astar) + * [--convention {x_a, x_astar}] (default x_a) * [--color-key {tsl, pucm, nh}] (default tsl) * [--phase N] (default: all phases) * [--ref-dir x,y,z] (default 0,0,1) @@ -331,7 +331,7 @@ bool writePoleFigure(const Options& opts, PhaseScan& s, LaueOps::Pointer op, con config.hexConvention = opts.convention; auto names = op->getDefaultPoleFigureNames(opts.convention); - config.labels = {names[0], names[1], names[2]}; + config.poleFigureNames = {names[0], names[1], names[2]}; config.order = {0, 1, 2}; PoleFigureCompositor compositor; diff --git a/Source/Apps/render_ebsd.h b/Source/Apps/render_ebsd.h index 1ca9c5b7..50993915 100644 --- a/Source/Apps/render_ebsd.h +++ b/Source/Apps/render_ebsd.h @@ -16,9 +16,9 @@ namespace ebsdlib::render_ebsd struct Options { - std::string inputFile; ///< .ang or .ctf path - std::string outputDir; ///< directory to write PNGs into (created if missing) - ebsdlib::HexConvention convention = ebsdlib::HexConvention::XParallelAStar; + std::string inputFile; ///< .ang or .ctf path + std::string outputDir; ///< directory to write PNGs into (created if missing) + ebsdlib::HexConvention convention = ebsdlib::HexConvention::XParallelA; // TSL/EDAX default ebsdlib::ColorKeyKind colorKey = ebsdlib::ColorKeyKind::TSL; int phaseFilter = -1; ///< -1 = render every indexed phase; otherwise only this phase index std::array refDir = {0.0F, 0.0F, 1.0F}; ///< Sample-frame reference direction for IPF map (default = +Z) diff --git a/Source/EbsdLib/LaueOps/CubicLowOps.cpp b/Source/EbsdLib/LaueOps/CubicLowOps.cpp index 575aed6a..b29ddd9f 100644 --- a/Source/EbsdLib/LaueOps/CubicLowOps.cpp +++ b/Source/EbsdLib/LaueOps/CubicLowOps.cpp @@ -805,7 +805,7 @@ ebsdlib::Rgb CubicLowOps::generateRodriguesColor(double r1, double r2, double r3 // ----------------------------------------------------------------------------- std::array CubicLowOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<011>", "<111>"}; + return {"{001}", "{011}", "{111}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/CubicOps.cpp b/Source/EbsdLib/LaueOps/CubicOps.cpp index cd1a68f5..eb1f20bb 100644 --- a/Source/EbsdLib/LaueOps/CubicOps.cpp +++ b/Source/EbsdLib/LaueOps/CubicOps.cpp @@ -1731,7 +1731,7 @@ ebsdlib::Rgb CubicOps::generateRodriguesColor(double r1, double r2, double r3) c // ----------------------------------------------------------------------------- std::array CubicOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<011>", "<111>"}; + return {"{001}", "{011}", "{111}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/HexagonalLowOps.cpp b/Source/EbsdLib/LaueOps/HexagonalLowOps.cpp index 096ada38..bc24c4d8 100644 --- a/Source/EbsdLib/LaueOps/HexagonalLowOps.cpp +++ b/Source/EbsdLib/LaueOps/HexagonalLowOps.cpp @@ -1315,12 +1315,10 @@ ebsdlib::Rgb HexagonalLowOps::generateRodriguesColor(double r1, double r2, doubl // ----------------------------------------------------------------------------- std::array HexagonalLowOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - // See HexagonalOps::getDefaultPoleFigureNames for the OIM/MTEX label rationale. - if(conv == ebsdlib::HexConvention::XParallelA) - { - return {"<0001>", "<10-10>", "<2-1-10>"}; - } - return {"<0001>", "<10-10>", "<11-20>"}; + // See HexagonalOps::getDefaultPoleFigureNames: the family identity does not + // depend on the X||a vs X||a* convention, so the labels are the same for both. + (void)conv; + return {"{0001}", "{10-10}", "{11-20}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/HexagonalLowOps.h b/Source/EbsdLib/LaueOps/HexagonalLowOps.h index 5a3685d2..49f70737 100644 --- a/Source/EbsdLib/LaueOps/HexagonalLowOps.h +++ b/Source/EbsdLib/LaueOps/HexagonalLowOps.h @@ -259,8 +259,8 @@ class EbsdLib_EXPORT HexagonalLowOps : public LaueOps * @brief generateStandardTriangle Generates an RGBA array that is a color "Standard" IPF Triangle Legend used for IPF Color Maps. * @return */ - ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv, ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, - bool gridded = false) const override; + ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv = ebsdlib::HexConvention::XParallelA, + ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, bool gridded = false) const override; bool mapPixelToSphereSST(int xPixel, int yPixel, int imageDim, std::array& sphereDir) const override; diff --git a/Source/EbsdLib/LaueOps/HexagonalOps.cpp b/Source/EbsdLib/LaueOps/HexagonalOps.cpp index 66922cfb..94557f49 100644 --- a/Source/EbsdLib/LaueOps/HexagonalOps.cpp +++ b/Source/EbsdLib/LaueOps/HexagonalOps.cpp @@ -238,11 +238,12 @@ struct SymOps // // Under X||a*, family-1's first member at (1, 0, 0) is the {10-10} // plane normal a*1, and family-2's first member at (cos30, sin30, 0) - // is the {2-1-10} direction. Under X||a, those Cartesian numbers - // change because the basis rotates 30° about c. + // is the {11-20} plane normal (the a-axis direction). Under X||a, those + // Cartesian numbers change because the basis rotates 30° about c, but the + // families themselves are unchanged. std::vector dirsFamily0; // {0001} family std::vector dirsFamily1; // {10-10} family - std::vector dirsFamily2; // {2-1-10} family + std::vector dirsFamily2; // {11-20} family (a-axis normals; == {2-1-10}) template static SymOps build() @@ -1277,7 +1278,7 @@ class GenerateSphereCoordsImpl { emitDirAndAntipode(gTranspose, m_Sym->dirsFamily1[k], m_xyz011, i * f1Stride + k * 2); } - // {2-1-10} plane-normal family (3 unique under hex 6/mmm), offset 30° from {10-10}. + // {11-20} plane-normal family (3 unique under hex 6/mmm), offset 30° from {10-10}. for(size_t k = 0; k < m_Sym->dirsFamily2.size(); ++k) { emitDirAndAntipode(gTranspose, m_Sym->dirsFamily2[k], m_xyz111, i * f2Stride + k * 2); @@ -1384,18 +1385,16 @@ ebsdlib::Rgb HexagonalOps::generateRodriguesColor(double r1, double r2, double r // ----------------------------------------------------------------------------- std::array HexagonalOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - // The a-family slot is sym-equivalent under the 6-fold; <2-1-10> and - // <11-20> are different orbit members of the same physical family. - // Different software ecosystems pick different representatives: - // X||a (OIM / EDAX / legacy DREAM3D): <2-1-10> (the a-vector itself) - // X||a* (MTEX / Oxford): <11-20> - // Match the user's expected toolchain so the printed labels line up - // with what they see in OIM Analysis or MTEX side-by-side. - if(conv == ebsdlib::HexConvention::XParallelA) - { - return {"<0001>", "<10-10>", "<2-1-10>"}; - } - return {"<0001>", "<10-10>", "<11-20>"}; + // The three pole figures plot whole plane-normal families, so they are named + // with brace (plane-family) notation. The family identity does NOT depend on + // the X||a vs X||a* convention: that choice is a 30 deg rotation of the + // Cartesian basis about c, which only rotates where the poles land in the + // figure (handled in the direction tables / generateSphereCoordsFromEulers). + // The third family is the a-axis family; {2-1-10} and {11-20} are synonyms for + // it ((2-1-10) is a member of {11-20}), so we use the standard {11-20} for both + // conventions rather than switching the title. conv is unused for the labels. + (void)conv; + return {"{0001}", "{10-10}", "{11-20}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/HexagonalOps.h b/Source/EbsdLib/LaueOps/HexagonalOps.h index 0193a09a..ef76dc37 100644 --- a/Source/EbsdLib/LaueOps/HexagonalOps.h +++ b/Source/EbsdLib/LaueOps/HexagonalOps.h @@ -259,8 +259,8 @@ class EbsdLib_EXPORT HexagonalOps : public LaueOps * @brief generateStandardTriangle Generates an RGBA array that is a color "Standard" IPF Triangle Legend used for IPF Color Maps. * @return */ - ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv, ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, - bool gridded = false) const override; + ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv = ebsdlib::HexConvention::XParallelA, + ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, bool gridded = false) const override; bool mapPixelToSphereSST(int xPixel, int yPixel, int imageDim, std::array& sphereDir) const override; diff --git a/Source/EbsdLib/LaueOps/LaueOps.cpp b/Source/EbsdLib/LaueOps/LaueOps.cpp index d0bfffd3..d7e649fa 100644 --- a/Source/EbsdLib/LaueOps/LaueOps.cpp +++ b/Source/EbsdLib/LaueOps/LaueOps.cpp @@ -1022,10 +1022,29 @@ UInt8ArrayType::Pointer LaueOps::annotateIPFImage(UInt8ArrayType::Pointer triang context.draw_image(image->getPointer(0), imageDim, imageDim, imageDim * image->getNumberOfComponents(), figureOrigin[0], figureOrigin[1], static_cast(legendWidth), static_cast(legendHeight)); - // Draw title + // Draw title at the large font. context.set_font(latoBold.data(), static_cast(latoBold.size()), fontPtSize * 1.5); ebsdlib::WriteText(context, title, {margins[0], static_cast(fontPtSize * 1.5)}, fontPtSize * 1.5); + // Hex/trig basis convention on a small sub-line just under the title (smaller + // than the Miller-index annotation font) so it fits the cropped width and does + // not collide with the triangle labels. + std::string convLine; + if(conv == ebsdlib::HexConvention::XParallelA) + { + convLine = "Convention: X||a (TSL)"; + } + else if(conv == ebsdlib::HexConvention::XParallelAStar) + { + convLine = "Convention: X||a* (MTEX/Oxford)"; + } + if(!convLine.empty()) + { + const float subFontSize = fontPtSize * 0.7F; + context.set_font(latoRegular.data(), static_cast(latoRegular.size()), subFontSize); + ebsdlib::WriteText(context, convLine, {margins[0], static_cast(fontPtSize * 2.6F)}, static_cast(subFontSize)); + } + // Draw per-subclass annotations (Miller indices, SST boundary lines) context.set_font(latoRegular.data(), static_cast(latoRegular.size()), fontPtSize); drawIPFAnnotations(context, canvasDim, fontPtSize, margins, figureOrigin, figureCenter, generateEntirePlane, conv); diff --git a/Source/EbsdLib/LaueOps/LaueOps.h b/Source/EbsdLib/LaueOps/LaueOps.h index 87aa43d5..fed35722 100644 --- a/Source/EbsdLib/LaueOps/LaueOps.h +++ b/Source/EbsdLib/LaueOps/LaueOps.h @@ -359,8 +359,8 @@ class EbsdLib_EXPORT LaueOps * meaningful for legends; the per-pixel generateIPFColor * path does not expose this knob. */ - virtual UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv, ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, - bool gridded = false) const = 0; + virtual UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv = ebsdlib::HexConvention::XParallelA, + ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, bool gridded = false) const = 0; /** * @brief Computes the SST color for a Euler-rotated reference direction diff --git a/Source/EbsdLib/LaueOps/MonoclinicOps.cpp b/Source/EbsdLib/LaueOps/MonoclinicOps.cpp index ec8f626b..dd19774b 100644 --- a/Source/EbsdLib/LaueOps/MonoclinicOps.cpp +++ b/Source/EbsdLib/LaueOps/MonoclinicOps.cpp @@ -607,7 +607,7 @@ ebsdlib::Rgb MonoclinicOps::generateRodriguesColor(double r1, double r2, double // ----------------------------------------------------------------------------- std::array MonoclinicOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<100>", "<010>"}; + return {"{001}", "{100}", "{010}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/OrthoRhombicOps.cpp b/Source/EbsdLib/LaueOps/OrthoRhombicOps.cpp index 5e45fa0f..14a95670 100644 --- a/Source/EbsdLib/LaueOps/OrthoRhombicOps.cpp +++ b/Source/EbsdLib/LaueOps/OrthoRhombicOps.cpp @@ -617,7 +617,7 @@ ebsdlib::Rgb OrthoRhombicOps::generateRodriguesColor(double r1, double r2, doubl // ----------------------------------------------------------------------------- std::array OrthoRhombicOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<100>", "<010>"}; + return {"{001}", "{100}", "{010}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TetragonalLowOps.cpp b/Source/EbsdLib/LaueOps/TetragonalLowOps.cpp index d96f7f7d..f135f32c 100644 --- a/Source/EbsdLib/LaueOps/TetragonalLowOps.cpp +++ b/Source/EbsdLib/LaueOps/TetragonalLowOps.cpp @@ -622,7 +622,7 @@ ebsdlib::Rgb TetragonalLowOps::generateRodriguesColor(double r1, double r2, doub // ----------------------------------------------------------------------------- std::array TetragonalLowOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<100>", "<110>"}; + return {"{001}", "{100}", "{110}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TetragonalOps.cpp b/Source/EbsdLib/LaueOps/TetragonalOps.cpp index f1205478..f4296b0a 100644 --- a/Source/EbsdLib/LaueOps/TetragonalOps.cpp +++ b/Source/EbsdLib/LaueOps/TetragonalOps.cpp @@ -663,7 +663,7 @@ ebsdlib::Rgb TetragonalOps::generateRodriguesColor(double r1, double r2, double // ----------------------------------------------------------------------------- std::array TetragonalOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<100>", "<110>"}; + return {"{001}", "{100}", "{110}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TriclinicOps.cpp b/Source/EbsdLib/LaueOps/TriclinicOps.cpp index b9376c10..46da46b8 100644 --- a/Source/EbsdLib/LaueOps/TriclinicOps.cpp +++ b/Source/EbsdLib/LaueOps/TriclinicOps.cpp @@ -604,7 +604,7 @@ ebsdlib::Rgb TriclinicOps::generateRodriguesColor(double r1, double r2, double r // ----------------------------------------------------------------------------- std::array TriclinicOps::getDefaultPoleFigureNames(ebsdlib::HexConvention conv) const { - return {"<001>", "<100>", "<010>"}; + return {"{001}", "{100}", "{010}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TrigonalLowOps.cpp b/Source/EbsdLib/LaueOps/TrigonalLowOps.cpp index 17e5ad39..a3da9133 100644 --- a/Source/EbsdLib/LaueOps/TrigonalLowOps.cpp +++ b/Source/EbsdLib/LaueOps/TrigonalLowOps.cpp @@ -734,7 +734,7 @@ std::array TrigonalLowOps::getDefaultPoleFigureNames(ebsdlib::He // See TrigonalOps::getDefaultPoleFigureNames for the rationale on why the // conv parameter is plumbed but does not change the returned strings here. (void)conv; - return {"<0001>", "<-1-120>", "<2-1-10>"}; + return {"{0001}", "{-1-120}", "{2-1-10}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TrigonalLowOps.h b/Source/EbsdLib/LaueOps/TrigonalLowOps.h index fdc4ccc5..d83dec51 100644 --- a/Source/EbsdLib/LaueOps/TrigonalLowOps.h +++ b/Source/EbsdLib/LaueOps/TrigonalLowOps.h @@ -263,8 +263,8 @@ class EbsdLib_EXPORT TrigonalLowOps : public LaueOps * @brief generateStandardTriangle Generates an RGBA array that is a color "Standard" IPF Triangle Legend used for IPF Color Maps. * @return */ - ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv, ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, - bool gridded = false) const override; + ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv = ebsdlib::HexConvention::XParallelA, + ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, bool gridded = false) const override; bool mapPixelToSphereSST(int xPixel, int yPixel, int imageDim, std::array& sphereDir) const override; diff --git a/Source/EbsdLib/LaueOps/TrigonalOps.cpp b/Source/EbsdLib/LaueOps/TrigonalOps.cpp index 66b5710b..84d08be1 100644 --- a/Source/EbsdLib/LaueOps/TrigonalOps.cpp +++ b/Source/EbsdLib/LaueOps/TrigonalOps.cpp @@ -756,7 +756,7 @@ std::array TrigonalOps::getDefaultPoleFigureNames(ebsdlib::HexCo // strings are the same under both conventions for now; revisit if a // user reports a specific OIM/MTEX label divergence here. (void)conv; - return {"<0001>", "<0-110>", "<1-100>"}; + return {"{0001}", "{0-110}", "{1-100}"}; } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/LaueOps/TrigonalOps.h b/Source/EbsdLib/LaueOps/TrigonalOps.h index eb32b43c..7e327652 100644 --- a/Source/EbsdLib/LaueOps/TrigonalOps.h +++ b/Source/EbsdLib/LaueOps/TrigonalOps.h @@ -262,8 +262,8 @@ class EbsdLib_EXPORT TrigonalOps : public LaueOps * @brief generateStandardTriangle Generates an RGBA array that is a color "Standard" IPF Triangle Legend used for IPF Color Maps. * @return */ - ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv, ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, - bool gridded = false) const override; + ebsdlib::UInt8ArrayType::Pointer generateIPFTriangleLegend(int imageDim, bool generateEntirePlane, ebsdlib::HexConvention conv = ebsdlib::HexConvention::XParallelA, + ebsdlib::ColorKeyKind kind = ebsdlib::ColorKeyKind::TSL, bool gridded = false) const override; bool mapPixelToSphereSST(int xPixel, int yPixel, int imageDim, std::array& sphereDir) const override; diff --git a/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.cpp b/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.cpp new file mode 100644 index 00000000..7b9d4376 --- /dev/null +++ b/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.cpp @@ -0,0 +1,157 @@ +#include "EbsdLib/Utilities/DiscretePoleFigureCompositor.h" + +#include "EbsdLib/LaueOps/LaueOps.h" +#include "EbsdLib/Math/EbsdLibMath.h" +#include "EbsdLib/Utilities/Fonts.hpp" +#include "EbsdLib/Utilities/MarkerOccupancyGrid.h" +#include "EbsdLib/Utilities/PoleFigureChrome.h" +#include "EbsdLib/Utilities/PoleFigureCompositor.h" +#include "EbsdLib/Utilities/PoleFigureProjection.h" + +#include + +#include +#include +#include +#include + +namespace ebsdlib +{ +// ----------------------------------------------------------------------------- +UInt8ArrayType::Pointer RenderDiscreteMarkerSprite(const std::array& color, float radiusPx, int& outSize) +{ + int diameter = static_cast(std::ceil(2.0f * radiusPx + 2.0f)); // +2px AA padding + diameter = std::max(diameter, 2); + if(diameter % 2 != 0) + { + diameter++; // even => exact center for centered blits + } + outSize = diameter; + + // Fresh canvas starts fully transparent; draw only the circle. + canvas_ity::canvas spriteCanvas(diameter, diameter); + spriteCanvas.set_color(canvas_ity::fill_style, color[0], color[1], color[2], 1.0f); + spriteCanvas.begin_path(); + spriteCanvas.arc(static_cast(diameter) / 2.0f, static_cast(diameter) / 2.0f, radiusPx, 0.0f, ebsdlib::constants::k_2PiF); + spriteCanvas.fill(); + + auto sprite = UInt8ArrayType::CreateArray(static_cast(diameter) * diameter, {4ULL}, "MarkerSprite", true); + spriteCanvas.get_image_data(sprite->getPointer(0), diameter, diameter, diameter * 4, 0, 0); + return sprite; +} + +// ----------------------------------------------------------------------------- +CompositePoleFigureResult DiscretePoleFigureCompositor::generateCompositeImage(CompositePoleFigureConfiguration_t& config) +{ + CompositePoleFigureResult result; + + std::vector ops = LaueOps::GetAllOrientationOps(); + if(config.laueOpsIndex >= ops.size()) + { + return result; + } + LaueOps::Pointer op = ops[config.laueOpsIndex]; + + // --- Crystallography: symmetric pole vectors for the 3 families --- + const std::array symSizes = op->getNumSymmetry(); + const size_t numOrientations = (config.eulers != nullptr) ? config.eulers->getNumberOfTuples() : 0; + std::vector dims(1, 3); + std::array families = {FloatArrayType::CreateArray(numOrientations * static_cast(symSizes[0]), dims, "family0", true), + FloatArrayType::CreateArray(numOrientations * static_cast(symSizes[1]), dims, "family1", true), + FloatArrayType::CreateArray(numOrientations * static_cast(symSizes[2]), dims, "family2", true)}; + if(numOrientations > 0) + { + op->generateSphereCoordsFromEulers(config.eulers, families[0].get(), families[1].get(), families[2].get(), config.hexConvention); + } + + // --- Layout (shared with the raster compositor) --- + const LayoutMetrics layout = PoleFigureCompositor::computeLayoutMetrics(config); + + const std::array defaultNames = op->getDefaultPoleFigureNames(config.hexConvention); + auto nameFor = [&](int familyIndex) -> std::string { + if(config.poleFigureNames.size() > static_cast(familyIndex)) + { + return config.poleFigureNames[static_cast(familyIndex)]; + } + return defaultNames[static_cast(familyIndex)]; + }; + + // --- Fonts --- + std::vector latoBold = fonts::GetLatoBold(); + std::vector latoRegular = fonts::GetLatoRegular(); + std::vector firaSans = fonts::GetFiraSansRegular(); + + // --- Marker sprite (single color => render once) --- + const float halfSize = static_cast(config.imageDim) / 2.0f; + const float markerR = std::max(0.5f, config.markerStyle.radiusFraction * static_cast(config.imageDim)); + const float cellSize = 1.0f; // std::max(1.0f, 2.0f * markerR); + int spriteSize = 0; + UInt8ArrayType::Pointer sprite = RenderDiscreteMarkerSprite(config.markerStyle.color, markerR, spriteSize); + const float spriteHalf = static_cast(spriteSize) / 2.0f; + + // --- Render --- + canvas_ity::canvas context(layout.pageWidth, layout.pageHeight); + DrawPoleFigureBackground(context, layout); + DrawPoleFigureTitle(context, config.title, static_cast(layout.pageWidth), layout.fontPtSize, layout.margins, latoBold); + + for(int familyIndex = 0; familyIndex < 3; familyIndex++) + { + const int slot = (config.order.size() == 3) ? static_cast(config.order[static_cast(familyIndex)]) : familyIndex; + const std::array origin = layout.origins[static_cast(slot)]; + const float x0 = origin[0] + layout.margins; + const float y0 = origin[1] + layout.fontPtSize * 2.0f + layout.margins * 2.0f; + + MarkerOccupancyGrid grid(x0, y0, static_cast(config.imageDim), static_cast(config.imageDim), cellSize); + + const FloatArrayType::Pointer fam = families[static_cast(familyIndex)]; + const size_t numPoles = fam->getNumberOfTuples(); + for(size_t t = 0; t < numPoles; t++) + { + // Do Not Draw Negative Hemisphere. + if((*fam)[t * 3 + 2] < 0) + { + continue; + } + const std::array disk = StereographicProjectUpperHemisphere((*fam)[t * 3 + 0], (*fam)[t * 3 + 1], (*fam)[t * 3 + 2]); + if(disk[0] * disk[0] + disk[1] * disk[1] > 1.0f) + { + continue; // outside the unit disk + } + const float cx = x0 + halfSize + disk[0] * halfSize; + // flipFinalImage=true => +Y up (mirror of raw projection, matching the raster path's flip); + // flipFinalImage=false => +Y down (raw projection orientation, matching the unflipped raster path). + const float cy = config.flipFinalImage ? (y0 + halfSize - disk[1] * halfSize) : (y0 + halfSize + disk[1] * halfSize); + if(!grid.shouldDraw(cx, cy)) + { + continue; // decimated: a marker already occupies this cell + } + context.draw_image(sprite->getPointer(0), spriteSize, spriteSize, spriteSize * 4, cx - spriteHalf, cy - spriteHalf, static_cast(spriteSize), static_cast(spriteSize)); + } + + DrawPoleFigureFrame(context, config, origin, nameFor(familyIndex), layout.fontPtSize, layout.margins, latoBold, firaSans); + } + + const float legendFontPtSize = static_cast(config.imageDim) / 20.0f; + DrawPoleFigureInfoBlock(context, config, layout.origins[3], layout.margins, legendFontPtSize, latoRegular); + + auto image = UInt8ArrayType::CreateArray(static_cast(layout.pageWidth) * layout.pageHeight, {4ULL}, "CompositePoleFigure", true); + context.get_image_data(image->getPointer(0), layout.pageWidth, layout.pageHeight, layout.pageWidth * 4, 0, 0); + + result.image = image; + result.width = layout.pageWidth; + result.height = layout.pageHeight; + return result; +} + +// ----------------------------------------------------------------------------- +CompositePoleFigureResult GeneratePoleFigureComposite(CompositePoleFigureConfiguration_t& config) +{ + if(config.discrete && !config.discreteHeatMap) + { + DiscretePoleFigureCompositor compositor; + return compositor.generateCompositeImage(config); + } + PoleFigureCompositor compositor; + return compositor.generateCompositeImage(config); +} +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.h b/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.h new file mode 100644 index 00000000..0ceb208c --- /dev/null +++ b/Source/EbsdLib/Utilities/DiscretePoleFigureCompositor.h @@ -0,0 +1,34 @@ +#pragma once + +#include + +#include "EbsdLib/Core/EbsdDataArray.hpp" +#include "EbsdLib/EbsdLib.h" +#include "EbsdLib/Utilities/PoleFigureCompositor.h" // CompositePoleFigureConfiguration_t, CompositePoleFigureResult + +namespace ebsdlib +{ +/** + * @brief Renders one opaque filled-circle marker into a square RGBA tile. + * The tile is transparent outside the circle. outSize receives the tile edge length. + */ +EbsdLib_EXPORT UInt8ArrayType::Pointer RenderDiscreteMarkerSprite(const std::array& color, float radiusPx, int& outSize); + +/** + * @brief Renders plain discrete pole figures as opaque filled-circle markers drawn + * directly into a canvas_ity context (no intermediate RGBA raster). Crystallography + * is delegated to the configured LaueOps. Use when config.discrete && !discreteHeatMap. + */ +class EbsdLib_EXPORT DiscretePoleFigureCompositor +{ +public: + DiscretePoleFigureCompositor() = default; + ~DiscretePoleFigureCompositor() = default; + DiscretePoleFigureCompositor(const DiscretePoleFigureCompositor&) = delete; + DiscretePoleFigureCompositor(DiscretePoleFigureCompositor&&) = delete; + DiscretePoleFigureCompositor& operator=(const DiscretePoleFigureCompositor&) = delete; + DiscretePoleFigureCompositor& operator=(DiscretePoleFigureCompositor&&) = delete; + + CompositePoleFigureResult generateCompositeImage(CompositePoleFigureConfiguration_t& config); +}; +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h b/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h index 79f8c60e..7979c3bc 100644 --- a/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h +++ b/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h @@ -64,7 +64,7 @@ struct InversePoleFigureConfiguration_t int numColors; ///<* The number of colors to use in the color map std::string colorMap; ///<* Name of the ColorMap to use bool normalizeMRD; ///<* true=normalize to MRD (Multiples of Random Distribution), false=raw counts - std::vector labels; ///<* The labels for each of the 3 inverse pole figures (e.g., "RD", "TD", "ND") + std::vector labels; ///<* The labels for each of the 3 inverse pole figures std::string phaseName; ///<* The name of the phase bool FlipFinalImage; ///<* If TRUE, the final image will be flipped across the X Axis so that +Y axis points UP /// Cartesian basis convention for hex/trig phases. Affects the Miller- diff --git a/Source/EbsdLib/Utilities/MarkerOccupancyGrid.cpp b/Source/EbsdLib/Utilities/MarkerOccupancyGrid.cpp new file mode 100644 index 00000000..743f2e2c --- /dev/null +++ b/Source/EbsdLib/Utilities/MarkerOccupancyGrid.cpp @@ -0,0 +1,40 @@ +#include "EbsdLib/Utilities/MarkerOccupancyGrid.h" + +#include +#include + +namespace ebsdlib +{ +MarkerOccupancyGrid::MarkerOccupancyGrid(float originX, float originY, float width, float height, float cellSize) +: m_OriginX(originX) +, m_OriginY(originY) +, m_Right(originX + width) +, m_Bottom(originY + height) +, m_CellSize(std::max(cellSize, 1.0f)) +, m_Cols(static_cast(std::ceil(width / std::max(cellSize, 1.0f))) + 1) +, m_Rows(static_cast(std::ceil(height / std::max(cellSize, 1.0f))) + 1) +, m_Occupied(static_cast(m_Cols) * static_cast(m_Rows), false) +{ +} + +bool MarkerOccupancyGrid::shouldDraw(float x, float y) +{ + if(x < m_OriginX || x > m_Right || y < m_OriginY || y > m_Bottom) + { + return false; + } + const int col = static_cast((x - m_OriginX) / m_CellSize); + const int row = static_cast((y - m_OriginY) / m_CellSize); + if(col < 0 || col >= m_Cols || row < 0 || row >= m_Rows) + { + return false; + } + const size_t idx = static_cast(row) * static_cast(m_Cols) + static_cast(col); + if(m_Occupied[idx]) + { + return false; + } + m_Occupied[idx] = true; + return true; +} +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/MarkerOccupancyGrid.h b/Source/EbsdLib/Utilities/MarkerOccupancyGrid.h new file mode 100644 index 00000000..946e3ae1 --- /dev/null +++ b/Source/EbsdLib/Utilities/MarkerOccupancyGrid.h @@ -0,0 +1,35 @@ +#pragma once + +#include + +#include "EbsdLib/EbsdLib.h" + +namespace ebsdlib +{ +/** + * @brief Screen-space occupancy grid used to decimate overlapping markers. + * + * Sized to the marker footprint, only the first point that lands in a given cell + * is drawn; later points in that cell are skipped. This turns O(N) marker draws + * into O(area / cell_area) regardless of how many points exist. Modeled on + * McPlotty's PointDecimationGrid. + */ +class EbsdLib_EXPORT MarkerOccupancyGrid +{ +public: + MarkerOccupancyGrid(float originX, float originY, float width, float height, float cellSize); + + /** @brief True only the first time an in-bounds point lands in a cell (marks it). */ + bool shouldDraw(float x, float y); + +private: + float m_OriginX; + float m_OriginY; + float m_Right; + float m_Bottom; + float m_CellSize; + int m_Cols; + int m_Rows; + std::vector m_Occupied; +}; +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureChrome.cpp b/Source/EbsdLib/Utilities/PoleFigureChrome.cpp new file mode 100644 index 00000000..4063a0f7 --- /dev/null +++ b/Source/EbsdLib/Utilities/PoleFigureChrome.cpp @@ -0,0 +1,225 @@ +/* ============================================================================ + * Copyright (c) 2009-2025 BlueQuartz Software, LLC + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of BlueQuartz Software, the US Air Force, nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +#include "EbsdLib/Utilities/PoleFigureChrome.h" + +#include "EbsdLib/Math/EbsdLibMath.h" +#include "EbsdLib/Utilities/EbsdStringUtils.hpp" + +#include + +#include + +#include "EbsdLib/LaueOps/LaueOps.h" + +namespace ebsdlib +{ + +// ----------------------------------------------------------------------------- +void DrawPoleFigureBackground(canvas_ity::canvas& context, const LayoutMetrics& layout) +{ + context.move_to(0.0f, 0.0f); + context.line_to(static_cast(layout.pageWidth), 0.0f); + context.line_to(static_cast(layout.pageWidth), static_cast(layout.pageHeight)); + context.line_to(0.0f, static_cast(layout.pageHeight)); + context.line_to(0.0f, 0.0f); + context.close_path(); + context.set_color(canvas_ity::fill_style, 1.0f, 1.0f, 1.0f, 1.0f); + context.fill(); +} + +// ----------------------------------------------------------------------------- +void DrawPoleFigureTitle(canvas_ity::canvas& context, const std::string& title, float pageWidth, float fontPtSize, float margins, const std::vector& latoBold) +{ + if(title.empty()) + { + return; + } + context.begin_path(); + context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); + context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.text_baseline = canvas_ity::alphabetic; + context.fill_text(title.c_str(), margins, margins + fontPtSize); + context.close_path(); +} + +// ----------------------------------------------------------------------------- +void DrawPoleFigureInfoBlock(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array position, float margins, float fontPtSize, + const std::vector& latoRegular) +{ + const float scaleBarRelativeWidth = 0.10f; + const auto imageWidth = static_cast(config.imageDim); + const float rectWidth = imageWidth * scaleBarRelativeWidth; + + std::vector laueNames = LaueOps::GetLaueNames(); + std::string laueGroupName; + if(config.laueOpsIndex < laueNames.size()) + { + laueGroupName = laueNames[config.laueOpsIndex]; + } + + std::vector labels = { + fmt::format("Phase Num: {}", config.phaseNumber), + fmt::format("Material Name: {}", config.phaseName), + fmt::format("Laue Group: {}", laueGroupName), + fmt::format("Samples: {}", config.eulers != nullptr ? config.eulers->getNumberOfTuples() : 0), + fmt::format("Hex/Trig Convention: {}", config.hexConvention == ebsdlib::HexConvention::XParallelAStar ? "x||a*" : "x||a"), + // fmt::format("{} Right, {} Up", config.axisNames[0], config.axisNames[1]) + }; + + if(!config.discrete) + { + labels.push_back(fmt::format("Lambert Sq. Dim: {}", config.lambertDim)); + } + + float heightInc = 1.0f; + for(const auto& label : labels) + { + context.begin_path(); + context.set_font(const_cast(latoRegular.data()), static_cast(latoRegular.size()), fontPtSize); + context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.text_baseline = canvas_ity::alphabetic; + context.fill_text(label.c_str(), position[0] + margins + rectWidth + margins, position[1] + margins + (static_cast(config.imageDim) / 3.0f) + (heightInc * fontPtSize)); + context.close_path(); + heightInc++; + } +} + +// ----------------------------------------------------------------------------- +void DrawPoleFigureFrame(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array origin, const std::string& poleFigureName, float fontPtSize, float margins, + const std::vector& latoBold, const std::vector& firaSans) +{ + const auto imageSize = static_cast(config.imageDim); + + // Circle outline + context.begin_path(); + context.line_cap = canvas_ity::circle; + context.set_line_width(1.0f); + context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.arc(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f, imageSize / 2.0f, 0, ebsdlib::constants::k_2PiF); + context.stroke(); + context.close_path(); + + // X axis line + context.begin_path(); + context.line_cap = canvas_ity::square; + context.set_line_width(1.0f); + context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.move_to(origin[0] + margins, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f); + context.line_to(origin[0] + margins + imageSize, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f); + context.stroke(); + context.close_path(); + + // Y axis line + context.begin_path(); + context.line_cap = canvas_ity::square; + context.set_line_width(1.0f); + context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.move_to(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f); + context.line_to(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize); + context.stroke(); + context.close_path(); + + // "X" axis label + context.begin_path(); + context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); + context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.text_baseline = canvas_ity::alphabetic; + context.fill_text(config.axisNames[0].c_str(), origin[0] + margins * 1.5f + imageSize, origin[1] + fontPtSize * 2.25f + margins * 2.0f + imageSize / 2.0f); + context.close_path(); + + // "Y" axis label + context.begin_path(); + context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); + context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.text_baseline = canvas_ity::alphabetic; + const float yFontWidth = context.measure_text(config.axisNames[1].c_str()); + if(config.flipFinalImage) + { + context.fill_text(config.axisNames[1].c_str(), origin[0] + margins - (0.5f * yFontWidth) + imageSize / 2.0f, origin[1] + fontPtSize * 1.9f + margins * 2.0f); + } + else + { + context.fill_text(config.axisNames[1].c_str(), origin[0] + margins - (0.5f * yFontWidth) + imageSize / 2.0f, origin[1] + fontPtSize * 3.0f + margins * 2.0f + imageSize); + } + + context.close_path(); + + // Family label rendered as a parenthesized title, e.g. brace-notation + // "{0001}" (and any legacy angle-bracket "<0001>") is shown as "(0001)". + std::string subtitle = EbsdStringUtils::replace(poleFigureName, "{", "("); + subtitle = EbsdStringUtils::replace(subtitle, "}", ")"); + subtitle = EbsdStringUtils::replace(subtitle, "<", "("); + subtitle = EbsdStringUtils::replace(subtitle, ">", ")"); + + std::string bottomPart; + std::array textOrigin = {origin[0] + margins, origin[1] + fontPtSize + 2.0f * margins}; + + // Handle overbar notation: "-" before a digit draws a line above the digit + for(size_t idx = 0; idx < subtitle.size(); idx++) + { + if(subtitle.at(idx) == '-' && idx + 1 < subtitle.size()) + { + const char charBuf[] = {subtitle[idx + 1], 0}; + context.set_font(const_cast(firaSans.data()), static_cast(firaSans.size()), fontPtSize); + float tw = 0.0f; + if(!bottomPart.empty()) + { + tw = context.measure_text(bottomPart.c_str()); + } + const float charWidth = context.measure_text(charBuf); + const float dashWidth = charWidth * 0.5f; + const float dashOffset = charWidth * 0.25f; + + context.begin_path(); + context.line_cap = canvas_ity::square; + context.set_line_width(2.0f); + context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.move_to(textOrigin[0] + tw + dashOffset, textOrigin[1] - (0.8f * fontPtSize)); + context.line_to(textOrigin[0] + tw + dashOffset + dashWidth, textOrigin[1] - (0.8f * fontPtSize)); + context.stroke(); + context.close_path(); + } + else + { + bottomPart.push_back(subtitle.at(idx)); + } + } + + // Draw the direction subtitle text + context.begin_path(); + context.set_font(const_cast(firaSans.data()), static_cast(firaSans.size()), fontPtSize); + context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); + context.text_baseline = canvas_ity::alphabetic; + context.fill_text(bottomPart.c_str(), textOrigin[0], textOrigin[1]); + context.close_path(); +} + +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureChrome.h b/Source/EbsdLib/Utilities/PoleFigureChrome.h new file mode 100644 index 00000000..0acbc918 --- /dev/null +++ b/Source/EbsdLib/Utilities/PoleFigureChrome.h @@ -0,0 +1,64 @@ +/* ============================================================================ + * Copyright (c) 2009-2025 BlueQuartz Software, LLC + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of BlueQuartz Software, the US Air Force, nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +#pragma once + +#include +#include +#include + +#include "EbsdLib/EbsdLib.h" +#include "EbsdLib/Utilities/PoleFigureCompositor.h" // CompositePoleFigureConfiguration_t, LayoutMetrics + +namespace canvas_ity +{ +class canvas; +} // namespace canvas_ity + +namespace ebsdlib +{ +/** @brief Fills the entire page with a white background. */ +EbsdLib_EXPORT void DrawPoleFigureBackground(canvas_ity::canvas& context, const LayoutMetrics& layout); + +/** @brief Draws the composite title at the top of the page. */ +EbsdLib_EXPORT void DrawPoleFigureTitle(canvas_ity::canvas& context, const std::string& title, float pageWidth, float fontPtSize, float margins, const std::vector& latoBold); + +/** @brief Draws the phase/sample info block used in the legend slot for discrete figures. */ +EbsdLib_EXPORT void DrawPoleFigureInfoBlock(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array position, float margins, float fontPtSize, + const std::vector& latoRegular); + +/** + * @brief Draws the bounding circle, X/Y axis lines, axis labels, and direction + * subtitle for one pole figure at the given origin. Does NOT draw the figure data + * (raster blit or markers) — the caller draws that first. + */ +EbsdLib_EXPORT void DrawPoleFigureFrame(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array origin, const std::string& poleFigureName, float fontPtSize, + float margins, const std::vector& latoBold, const std::vector& firaSans); +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureCompositor.cpp b/Source/EbsdLib/Utilities/PoleFigureCompositor.cpp index 0f9a0ad3..b7e62f8f 100644 --- a/Source/EbsdLib/Utilities/PoleFigureCompositor.cpp +++ b/Source/EbsdLib/Utilities/PoleFigureCompositor.cpp @@ -4,8 +4,8 @@ #include "EbsdLib/Math/EbsdLibMath.h" #include "EbsdLib/Utilities/CanvasUtilities.hpp" #include "EbsdLib/Utilities/ColorTable.h" -#include "EbsdLib/Utilities/EbsdStringUtils.hpp" #include "EbsdLib/Utilities/Fonts.hpp" +#include "EbsdLib/Utilities/PoleFigureChrome.h" #include "EbsdLib/Utilities/PoleFigureUtilities.h" #include @@ -119,11 +119,12 @@ std::vector PoleFigureCompositor::generatePoleFigures(C pfConfig.discrete = config.discrete; pfConfig.discreteHeatMap = config.discreteHeatMap; pfConfig.colorMap = config.colorMap; - pfConfig.labels = config.labels; + pfConfig.labels = config.poleFigureNames; pfConfig.order = config.order; pfConfig.phaseName = config.phaseName; - pfConfig.FlipFinalImage = config.flipFinalImage; + pfConfig.flipFinalImage = config.flipFinalImage; pfConfig.hexConvention = config.hexConvention; + pfConfig.axisNames = config.axisNames; std::vector orientationOps = LaueOps::GetAllOrientationOps(); if(config.laueOpsIndex >= orientationOps.size()) @@ -134,7 +135,7 @@ std::vector PoleFigureCompositor::generatePoleFigures(C auto result = orientationOps[config.laueOpsIndex]->generatePoleFigure(pfConfig); // LaueOps::generatePoleFigure updates minScale/maxScale to reflect the actual - // data range. Propagate these back so the scalar bar shows correct values. + // data range. Propagate these back so the scalar bar shows the correct values. config.minScale = pfConfig.minScale; config.maxScale = pfConfig.maxScale; @@ -151,7 +152,8 @@ void PoleFigureCompositor::preprocessImages(std::vector g.run([&image, imageDim, flip]() { if(flip) { - image = flipAndMirror(image.get(), imageDim); + // Rotate 180 degrees about the horizontal (X) axis, i.e. a vertical flip. + image = MirrorImage(image.get(), imageDim); } image = convertColorOrder(image.get(), imageDim); }); @@ -162,7 +164,8 @@ void PoleFigureCompositor::preprocessImages(std::vector { if(flip) { - image = flipAndMirror(image.get(), imageDim); + // Rotate 180 degrees about the horizontal (X) axis, i.e. a vertical flip. + image = MirrorImage(image.get(), imageDim); } image = convertColorOrder(image.get(), imageDim); } @@ -183,30 +186,23 @@ UInt8ArrayType::Pointer PoleFigureCompositor::compositeToCanvas(const CompositeP context.text_baseline = canvas_ity::alphabetic; // White background - context.move_to(0.0f, 0.0f); - context.line_to(static_cast(layout.pageWidth), 0.0f); - context.line_to(static_cast(layout.pageWidth), static_cast(layout.pageHeight)); - context.line_to(0.0f, static_cast(layout.pageHeight)); - context.line_to(0.0f, 0.0f); - context.close_path(); - context.set_color(canvas_ity::fill_style, 1.0f, 1.0f, 1.0f, 1.0f); - context.fill(); + DrawPoleFigureBackground(context, layout); // Draw each of the 3 pole figures for(int i = 0; i < 3 && i < static_cast(images.size()); i++) { - std::string directionLabel = images[i]->getName(); - drawPoleFigure(context, *images[i], layout.origins[i], config.imageDim, directionLabel, layout.fontPtSize, layout.margins, latoBold, firaSans); + std::string poleFigureName = images[i]->getName(); + drawPoleFigure(context, config, *images[i], layout.origins[i], poleFigureName, layout.fontPtSize, layout.margins, latoBold, firaSans); } // Title - drawTitle(context, config.title, static_cast(layout.pageWidth), layout.fontPtSize, layout.margins, latoBold); + DrawPoleFigureTitle(context, config.title, static_cast(layout.pageWidth), layout.fontPtSize, layout.margins, latoBold); // Legend at 4th position const float legendFontPtSize = static_cast(config.imageDim) / 20.0f; if(config.discrete) { - drawInfoBlock(context, config, layout.origins[3], layout.margins, legendFontPtSize, latoRegular); + DrawPoleFigureInfoBlock(context, config, layout.origins[3], layout.margins, legendFontPtSize, latoRegular); } else { @@ -221,106 +217,16 @@ UInt8ArrayType::Pointer PoleFigureCompositor::compositeToCanvas(const CompositeP } // ----------------------------------------------------------------------------- -void PoleFigureCompositor::drawPoleFigure(canvas_ity::canvas& context, const UInt8ArrayType& image, std::array origin, int imageDim, const std::string& directionLabel, float fontPtSize, - float margins, const std::vector& latoBold, const std::vector& firaSans) +void PoleFigureCompositor::drawPoleFigure(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, const UInt8ArrayType& image, std::array origin, + const std::string& poleFigureName, float fontPtSize, float margins, const std::vector& latoBold, const std::vector& firaSans) { - const auto imageSize = static_cast(imageDim); + const auto imageSize = static_cast(config.imageDim); // Draw the pole figure image - context.draw_image(const_cast(image.getPointer(0)), imageDim, imageDim, imageDim * static_cast(image.getNumberOfComponents()), origin[0] + margins, + context.draw_image(const_cast(image.getPointer(0)), config.imageDim, config.imageDim, config.imageDim * static_cast(image.getNumberOfComponents()), origin[0] + margins, origin[1] + fontPtSize * 2.0f + margins * 2.0f, imageSize, imageSize); - // Circle outline - context.begin_path(); - context.line_cap = canvas_ity::circle; - context.set_line_width(3.0f); - context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.arc(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f, imageSize / 2.0f, 0, ebsdlib::constants::k_2PiF); - context.stroke(); - context.close_path(); - - // X axis line - context.begin_path(); - context.line_cap = canvas_ity::square; - context.set_line_width(2.0f); - context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.move_to(origin[0] + margins, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f); - context.line_to(origin[0] + margins + imageSize, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize / 2.0f); - context.stroke(); - context.close_path(); - - // Y axis line - context.begin_path(); - context.line_cap = canvas_ity::square; - context.set_line_width(2.0f); - context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.move_to(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f); - context.line_to(origin[0] + margins + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins * 2.0f + imageSize); - context.stroke(); - context.close_path(); - - // "X" axis label - context.begin_path(); - context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); - context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.text_baseline = canvas_ity::alphabetic; - context.fill_text("TD", origin[0] + margins * 1.5f + imageSize, origin[1] + fontPtSize * 2.25f + margins * 2.0f + imageSize / 2.0f); - context.close_path(); - - // "Y" axis label - context.begin_path(); - context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); - context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.text_baseline = canvas_ity::alphabetic; - const float yFontWidth = context.measure_text("RD"); - context.fill_text("RD", origin[0] + margins - (0.5f * yFontWidth) + imageSize / 2.0f, origin[1] + fontPtSize * 2.0f + margins); - context.close_path(); - - // Direction label (e.g., "<001>" displayed as "(001)") - std::string subtitle = EbsdStringUtils::replace(directionLabel, "<", "("); - subtitle = EbsdStringUtils::replace(subtitle, ">", ")"); - - std::string bottomPart; - std::array textOrigin = {origin[0] + margins, origin[1] + fontPtSize + 2.0f * margins}; - - // Handle overbar notation: "-" before a digit draws a line above the digit - for(size_t idx = 0; idx < subtitle.size(); idx++) - { - if(subtitle.at(idx) == '-' && idx + 1 < subtitle.size()) - { - const char charBuf[] = {subtitle[idx + 1], 0}; - context.set_font(const_cast(firaSans.data()), static_cast(firaSans.size()), fontPtSize); - float tw = 0.0f; - if(!bottomPart.empty()) - { - tw = context.measure_text(bottomPart.c_str()); - } - const float charWidth = context.measure_text(charBuf); - const float dashWidth = charWidth * 0.5f; - const float dashOffset = charWidth * 0.25f; - - context.begin_path(); - context.line_cap = canvas_ity::square; - context.set_line_width(2.0f); - context.set_color(canvas_ity::stroke_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.move_to(textOrigin[0] + tw + dashOffset, textOrigin[1] - (0.8f * fontPtSize)); - context.line_to(textOrigin[0] + tw + dashOffset + dashWidth, textOrigin[1] - (0.8f * fontPtSize)); - context.stroke(); - context.close_path(); - } - else - { - bottomPart.push_back(subtitle.at(idx)); - } - } - - // Draw the direction subtitle text - context.begin_path(); - context.set_font(const_cast(firaSans.data()), static_cast(firaSans.size()), fontPtSize); - context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.text_baseline = canvas_ity::alphabetic; - context.fill_text(bottomPart.c_str(), textOrigin[0], textOrigin[1]); - context.close_path(); + DrawPoleFigureFrame(context, config, origin, poleFigureName, fontPtSize, margins, latoBold, firaSans); } // ----------------------------------------------------------------------------- @@ -379,76 +285,7 @@ void PoleFigureCompositor::drawScalarBar(canvas_ity::canvas& context, const Comp context.stroke_rectangle(x, y, rectWidth, colorHeight); } - drawInfoBlock(context, config, position, margins, fontPtSize, latoRegular); -} - -// ----------------------------------------------------------------------------- -void PoleFigureCompositor::drawInfoBlock(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array position, float margins, float fontPtSize, - const std::vector& latoRegular) -{ - const float scaleBarRelativeWidth = 0.10f; - const auto imageWidth = static_cast(config.imageDim); - const float rectWidth = imageWidth * scaleBarRelativeWidth; - - std::vector laueNames = LaueOps::GetLaueNames(); - std::string laueGroupName; - if(config.laueOpsIndex < laueNames.size()) - { - laueGroupName = laueNames[config.laueOpsIndex]; - } - - const std::vector labels = {fmt::format("Phase Num: {}", config.phaseNumber), - fmt::format("Material Name: {}", config.phaseName), - fmt::format("Laue Group: {}", laueGroupName), - fmt::format("Upper & Lower:"), - fmt::format("Samples: {}", config.eulers != nullptr ? config.eulers->getNumberOfTuples() : 0), - fmt::format("Lambert Sq. Dim: {}", config.lambertDim), - fmt::format("Hex/Trig Convention: {}", config.hexConvention == ebsdlib::HexConvention::XParallelAStar ? "x||a*" : "x||a")}; - - float heightInc = 1.0f; - for(const auto& label : labels) - { - context.begin_path(); - context.set_font(const_cast(latoRegular.data()), static_cast(latoRegular.size()), fontPtSize); - context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.text_baseline = canvas_ity::alphabetic; - context.fill_text(label.c_str(), position[0] + margins + rectWidth + margins, position[1] + margins + (static_cast(config.imageDim) / 3.0f) + (heightInc * fontPtSize)); - context.close_path(); - heightInc++; - } -} - -// ----------------------------------------------------------------------------- -void PoleFigureCompositor::drawTitle(canvas_ity::canvas& context, const std::string& title, float pageWidth, float fontPtSize, float margins, const std::vector& latoBold) -{ - if(title.empty()) - { - return; - } - context.begin_path(); - context.set_font(const_cast(latoBold.data()), static_cast(latoBold.size()), fontPtSize); - context.set_color(canvas_ity::fill_style, 0.0f, 0.0f, 0.0f, 1.0f); - context.text_baseline = canvas_ity::alphabetic; - context.fill_text(title.c_str(), margins, margins + fontPtSize); - context.close_path(); -} - -// ----------------------------------------------------------------------------- -UInt8ArrayType::Pointer PoleFigureCompositor::flipAndMirror(UInt8ArrayType* src, int imageDim) -{ - UInt8ArrayType::Pointer converted = UInt8ArrayType::CreateArray(static_cast(imageDim) * imageDim, src->getComponentDimensions(), src->getName(), true); - for(int y = 0; y < imageDim; y++) - { - const int destY = imageDim - 1 - y; - for(int x = 0; x < imageDim; x++) - { - const size_t indexSrc = static_cast(y) * imageDim + x; - const size_t indexDest = static_cast(destY) * imageDim + x; - uint8_t* srcPtr = src->getTuplePointer(indexSrc); - converted->setTuple(indexDest, srcPtr); - } - } - return converted; + DrawPoleFigureInfoBlock(context, config, position, margins, fontPtSize, latoRegular); } // ----------------------------------------------------------------------------- diff --git a/Source/EbsdLib/Utilities/PoleFigureCompositor.h b/Source/EbsdLib/Utilities/PoleFigureCompositor.h index 247a8086..497d5007 100644 --- a/Source/EbsdLib/Utilities/PoleFigureCompositor.h +++ b/Source/EbsdLib/Utilities/PoleFigureCompositor.h @@ -38,6 +38,7 @@ #include "EbsdLib/Core/EbsdDataArray.hpp" #include "EbsdLib/Core/EbsdLibConstants.h" #include "EbsdLib/EbsdLib.h" +#include "EbsdLib/Utilities/PoleFigureUtilities.h" namespace canvas_ity { @@ -57,6 +58,15 @@ enum class PoleFigureLayoutType : uint32_t Square = 2 ///< 2x2 grid arrangement }; +/** + * @brief Visual style for discrete pole figure markers (fully opaque filled circles). + */ +struct EbsdLib_EXPORT DiscreteMarkerStyle +{ + std::array color = {0.0f, 0.0f, 0.0f}; ///< Marker RGB color, default black (markers are opaque) + float radiusFraction = 0.006f; ///< Marker radius as a fraction of the figure diameter (imageDim) +}; + /** * @brief Configuration for generating a complete composite pole figure image. * @@ -67,19 +77,21 @@ enum class PoleFigureLayoutType : uint32_t struct EbsdLib_EXPORT CompositePoleFigureConfiguration_t { // --- Pole figure generation parameters --- - ebsdlib::FloatArrayType* eulers = nullptr; ///< Euler angles in radians (3-component tuples) - int imageDim = 512; ///< Height/width of each individual pole figure in pixels - int lambertDim = 256; ///< Lambert square dimension for interpolation - int numColors = 32; ///< Number of colors in the color table - double minScale = 0.0; ///< Minimum intensity scale value - double maxScale = 1.0; ///< Maximum intensity scale value - float sphereRadius = 1.0f; ///< Sphere radius (should always be 1.0) - bool discrete = false; ///< Use discrete point sampling instead of Lambert projection - bool discreteHeatMap = false; ///< Use heat map coloring for discrete mode - std::string colorMap; ///< Name of the color map to use - std::vector labels; ///< Labels for the 3 pole figures (e.g., "<001>", "<011>", "<111>") - std::vector order = {0, 1, 2}; ///< Display order of the 3 pole figures - bool flipFinalImage = true; ///< Flip individual images so +Y points up + ebsdlib::FloatArrayType* eulers = nullptr; ///< Euler angles in radians (3-component tuples) + int imageDim = 512; ///< Height/width of each individual pole figure in pixels + int lambertDim = 256; ///< Lambert square dimension for interpolation + int numColors = 32; ///< Number of colors in the color table + double minScale = 0.0; ///< Minimum intensity scale value + double maxScale = 1.0; ///< Maximum intensity scale value + float sphereRadius = 1.0f; ///< Sphere radius (should always be 1.0) + bool discrete = false; ///< Use discrete point sampling instead of Lambert projection + bool discreteHeatMap = false; ///< Use heat map coloring for discrete mode + std::string colorMap; ///< Name of the color map to use + std::vector poleFigureNames; ///< Labels for the 3 pole figures (e.g., "<001>", "<011>", "<111>") + std::vector order = {0, 1, 2}; ///< Display order of the 3 pole figures + bool flipFinalImage = true; ///<* If TRUE, the final image will be flipped across the X Axis so that +Y axis points UP + std::vector axisNames = {"A1", "A2", "A3"}; ///< The string to use for each axis of the pole figure + DiscreteMarkerStyle markerStyle; ///< Marker style for the discrete (non-heatmap) vector path // --- Composition parameters --- PoleFigureLayoutType layoutType = PoleFigureLayoutType::Horizontal; ///< How to arrange figures and legend @@ -89,12 +101,11 @@ struct EbsdLib_EXPORT CompositePoleFigureConfiguration_t std::string title; ///< Title text drawn at the top of the composite image // --- Convention parameters --- - /// Cartesian basis convention for hex/trig phases. Default preserves - /// current EbsdLib v3 behavior (X||a*) while plumbing is being added; - /// this default flips to XParallelA in PR 3 once internal SymOps tables - /// are reorganized. Ignored for cubic / tetragonal / orthorhombic / - /// monoclinic / triclinic Laue classes. See ebsdlib::HexConvention. - ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelAStar; + /// Cartesian basis convention for hex/trig phases. Defaults to X||a + /// (TSL/EDAX/legacy DREAM3D), matching the rest of EbsdLib. Ignored for + /// cubic / tetragonal / orthorhombic / monoclinic / triclinic Laue classes. + /// See ebsdlib::HexConvention. + ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelA; }; /** @@ -190,15 +201,18 @@ class EbsdLib_EXPORT PoleFigureCompositor void preprocessImages(std::vector& images, int imageDim, bool flipFinalImage); UInt8ArrayType::Pointer compositeToCanvas(const CompositePoleFigureConfiguration_t& config, const std::vector& images, const LayoutMetrics& layout); - static void drawPoleFigure(canvas_ity::canvas& context, const UInt8ArrayType& image, std::array origin, int imageDim, const std::string& directionLabel, float fontPtSize, float margins, - const std::vector& latoBold, const std::vector& firaSans); + static void drawPoleFigure(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, const UInt8ArrayType& image, std::array origin, const std::string& directionLabel, + float fontPtSize, float margins, const std::vector& latoBold, const std::vector& firaSans); static void drawScalarBar(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array position, float margins, float fontPtSize, const std::vector& latoRegular); - static void drawInfoBlock(canvas_ity::canvas& context, const CompositePoleFigureConfiguration_t& config, std::array position, float margins, float fontPtSize, - const std::vector& latoRegular); - static void drawTitle(canvas_ity::canvas& context, const std::string& title, float pageWidth, float fontPtSize, float margins, const std::vector& latoBold); - static UInt8ArrayType::Pointer flipAndMirror(UInt8ArrayType* src, int imageDim); static UInt8ArrayType::Pointer convertColorOrder(UInt8ArrayType* src, int imageDim); }; +/** + * @brief Generates a composite pole figure, routing to the correct compositor: + * discrete && !discreteHeatMap -> DiscretePoleFigureCompositor (vector markers), + * otherwise -> PoleFigureCompositor (raster). + */ +EbsdLib_EXPORT CompositePoleFigureResult GeneratePoleFigureComposite(CompositePoleFigureConfiguration_t& config); + } // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureProjection.cpp b/Source/EbsdLib/Utilities/PoleFigureProjection.cpp new file mode 100644 index 00000000..9c2cbcf0 --- /dev/null +++ b/Source/EbsdLib/Utilities/PoleFigureProjection.cpp @@ -0,0 +1,16 @@ +#include "EbsdLib/Utilities/PoleFigureProjection.h" + +namespace ebsdlib +{ +std::array StereographicProjectUpperHemisphere(float x, float y, float z) +{ + if(z < 0.0f) + { + x = -x; + y = -y; + z = -z; + } + const float denom = 1.0f + z; // z >= 0 here, so denom >= 1 (never zero) + return {x / denom, y / denom}; +} +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureProjection.h b/Source/EbsdLib/Utilities/PoleFigureProjection.h new file mode 100644 index 00000000..69473fad --- /dev/null +++ b/Source/EbsdLib/Utilities/PoleFigureProjection.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#include "EbsdLib/EbsdLib.h" + +namespace ebsdlib +{ +/** + * @brief Projects a unit direction vector to the upper-hemisphere stereographic disk. + * Folds any pole with z<0 into the upper hemisphere (negates the vector), then applies + * dx=x/(1+z), dy=y/(1+z). Returned coords lie within the unit disk (|d| <= 1). + */ +EbsdLib_EXPORT std::array StereographicProjectUpperHemisphere(float x, float y, float z); +} // namespace ebsdlib diff --git a/Source/EbsdLib/Utilities/PoleFigureUtilities.h b/Source/EbsdLib/Utilities/PoleFigureUtilities.h index 72653619..47601676 100644 --- a/Source/EbsdLib/Utilities/PoleFigureUtilities.h +++ b/Source/EbsdLib/Utilities/PoleFigureUtilities.h @@ -54,36 +54,36 @@ namespace ebsdlib * developer needs to create a 3 element std::vector and set the order index for the * Pole Figure. For example the OrthorhombicOps generates 3 Pole Figures in the order * of <001>, <100>, <010>. If the developer would like the Pole Figures to appear - * in the order of <100>, <010>, <100> then the oder needs to be set as [2, 0, 1]. + * in the order of <100>, <010>, <100> then the order needs to be set as [2, 0, 1]. * * The other interesting item is the Labels. Each LaueOps subclass uses a default * label for each Pole Figure. If the developer would like to over ride those labels * then this member can be set with a 3 Element std::vector with the new labels. - * Note that the new lables will REPLACE the default labels. + * Note that the new labels will REPLACE the default labels. */ struct PoleFigureConfiguration_t { - ebsdlib::FloatArrayType* eulers; ///<* The Euler Angles (in Radians) to use for the pole figure - int imageDim; ///<* The height/width of the generated pole figure - int lambertDim; ///<* The dimensions in voxels of the Lambert Square used for interpolation - int numColors; ///<* The number of colors to use in the Pole figure - double minScale; ///<* The minimum scale of the Pole Figure - double maxScale; ///<* The maximum scale of the Pole Figure - float sphereRadius; ///<* The radius of the Sphere to compute XYZ coords. Should ALWAYS be 1.0 - bool discrete; ///<* Should the Pole Figure be generated as a discrete plot - bool discreteHeatMap; ///<* Should the discrete be colored via a heat map style coloring - std::string colorMap; ///<* Name of the ColorMap to use - std::vector labels; ///<* The labels for each of the 3 Pole Figures - std::vector order; ///<* The order that the pole figures should appear in. - std::string phaseName; ///<* The Names of the phase - bool FlipFinalImage; ///<* If TRUE, the final image will be flipped across the X Axis so that +Y axis points UP + ebsdlib::FloatArrayType* eulers; ///<* The Euler Angles (in Radians) to use for the pole figure + int imageDim; ///<* The height/width of the generated pole figure + int lambertDim; ///<* The dimensions in voxels of the Lambert Square used for interpolation + int numColors; ///<* The number of colors to use in the Pole figure + double minScale; ///<* The minimum scale of the Pole Figure + double maxScale; ///<* The maximum scale of the Pole Figure + float sphereRadius; ///<* The radius of the Sphere to compute XYZ coords. Should ALWAYS be 1.0 + bool discrete; ///<* Should the Pole Figure be generated as a discrete plot + bool discreteHeatMap; ///<* Should the discrete be colored via a heat map style coloring + std::string colorMap; ///<* Name of the ColorMap to use + std::vector labels; ///<* The labels for each of the 3 Pole Figures + std::vector order; ///<* The order that the pole figures should appear in. + std::string phaseName; ///<* The Names of the phase + bool flipFinalImage = false; ///<* If TRUE, the final image will be flipped across the X Axis so that +Y axis points UP + std::vector axisNames = {"A1", "A2", "A3"}; ///< The string to use for each axis of the pole figure - ///<* Cartesian basis convention for hex/trig phases. Default preserves - /// current EbsdLib v3 behavior (X||a*) while plumbing is being added; - /// this default flips to XParallelA in PR 3 once internal SymOps tables - /// are reorganized. Ignored for cubic / tetragonal / orthorhombic / - /// monoclinic / triclinic Laue classes. See ebsdlib::HexConvention. - ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelAStar; + ///<* Cartesian basis convention for hex/trig phases. Defaults to X||a + /// (TSL/EDAX/legacy DREAM3D), matching the rest of EbsdLib. Ignored for + /// cubic / tetragonal / orthorhombic / monoclinic / triclinic Laue classes. + /// See ebsdlib::HexConvention. + ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelA; }; /** diff --git a/Source/EbsdLib/Utilities/SourceList.cmake b/Source/EbsdLib/Utilities/SourceList.cmake index bcf04484..3551cacb 100644 --- a/Source/EbsdLib/Utilities/SourceList.cmake +++ b/Source/EbsdLib/Utilities/SourceList.cmake @@ -11,6 +11,7 @@ set(EbsdLib_${DIR_NAME}_HDRS ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ModifiedLambertProjectionArray.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ModifiedLambertProjection3D.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ComputeStereographicProjection.h + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureProjection.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/LambertUtilities.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ColorTable.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ColorUtilities.h @@ -24,6 +25,8 @@ set(EbsdLib_${DIR_NAME}_HDRS ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/LatoRegular.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/CanvasUtilities.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureCompositor.h + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/DiscretePoleFigureCompositor.h + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureChrome.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/inipp.h ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ColorSpaceUtils.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/IColorKey.hpp @@ -34,6 +37,7 @@ set(EbsdLib_${DIR_NAME}_HDRS ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PUCMColorKey.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/wlenthe_orientation_coloring.hpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ImageCrop.hpp + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/MarkerOccupancyGrid.h ) set(EbsdLib_${DIR_NAME}_SRCS @@ -43,6 +47,7 @@ set(EbsdLib_${DIR_NAME}_SRCS ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ModifiedLambertProjectionArray.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureData.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ComputeStereographicProjection.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureProjection.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/LambertUtilities.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ColorTable.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ColorUtilities.cpp @@ -52,12 +57,15 @@ set(EbsdLib_${DIR_NAME}_SRCS ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/CanvasUtilities.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/Fonts.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureCompositor.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/DiscretePoleFigureCompositor.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PoleFigureChrome.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/FundamentalSectorGeometry.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/TSLColorKey.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/NolzeHielscherColorKey.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/GriddedColorKey.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/PUCMColorKey.cpp ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/ImageCrop.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/EbsdLib/${DIR_NAME}/MarkerOccupancyGrid.cpp ) # # QT5_WRAP_CPP( EbsdLib_Generated_MOC_SRCS ${EbsdLib_Utilities_MOC_HDRS} ) # set_source_files_properties( ${EbsdLib_Generated_MOC_SRCS} PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/Source/Test/CMakeLists.txt b/Source/Test/CMakeLists.txt index 824b7fe3..7dc89a39 100644 --- a/Source/Test/CMakeLists.txt +++ b/Source/Test/CMakeLists.txt @@ -49,6 +49,8 @@ set(EbsdLib_UnitTest_SRCS ${EbsdLibProj_SOURCE_DIR}/Source/Test/ModifiedLambertProjectionArrayTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/PoleFigureUtilitiesTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/PoleFigureCompositorTest.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/Test/DiscretePoleFigureCompositorTest.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/Test/PoleFigureProjectionTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/PoleFigureLaueComparisonTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/PoleFigurePositionTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/RenderEbsdSmokeTest.cpp @@ -66,6 +68,7 @@ set(EbsdLib_UnitTest_SRCS ${EbsdLibProj_SOURCE_DIR}/Source/Test/GriddedColorKeyTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/PUCMColorKeyTest.cpp ${EbsdLibProj_SOURCE_DIR}/Source/Test/ColorKeyKindTest.cpp + ${EbsdLibProj_SOURCE_DIR}/Source/Test/MarkerOccupancyGridTest.cpp ) @@ -90,8 +93,8 @@ if(EBSDLIB_DOWNLOAD_TEST_FILES) file(MAKE_DIRECTORY "${EBSDLIB_DATA_DIR}/TestFiles/") endif() - ebsdlib_download_test_data(EBSDLIB_DATA_DIR ${EBSDLIB_DATA_DIR} ARCHIVE_NAME Laue_Orientation_Clusters_v6.tar.gz SHA512 f327d3d2a86d539b3c1f3fc755d8f5741d8eb68aab45fc1ab54d9e5db48643903f9a37898366203e6eb2e7585ce57c6e186cca2107acb1a53318b813345cb10a) - ebsdlib_download_test_data(EBSDLIB_DATA_DIR ${EBSDLIB_DATA_DIR} ARCHIVE_NAME Pole_Figure_Images_v2.tar.gz SHA512 f272af212fa634d702129721de4b5bbb62a89a0cf872f4230df3ad809cf5c7c6c075847d93efe9c1866c2a832893602b9486937679bb0a1d5987df26f9766799) +# ebsdlib_download_test_data(EBSDLIB_DATA_DIR ${EBSDLIB_DATA_DIR} ARCHIVE_NAME Laue_Orientation_Clusters_v6.tar.gz SHA512 f327d3d2a86d539b3c1f3fc755d8f5741d8eb68aab45fc1ab54d9e5db48643903f9a37898366203e6eb2e7585ce57c6e186cca2107acb1a53318b813345cb10a) +# ebsdlib_download_test_data(EBSDLIB_DATA_DIR ${EBSDLIB_DATA_DIR} ARCHIVE_NAME Pole_Figure_Images_v3.tar.gz SHA512 91ddb4adc5303f28b4847b918a82ce82b669cb48bb7531bb529df5c1122032f9f26ffece11067442e3e3ebf64cdfb0c6aac9f984010571d30b6906f83acd760d) endif() diff --git a/Source/Test/CanvasUtilitiesTest.cpp b/Source/Test/CanvasUtilitiesTest.cpp index 66cd7eff..0754ba65 100644 --- a/Source/Test/CanvasUtilitiesTest.cpp +++ b/Source/Test/CanvasUtilitiesTest.cpp @@ -2,8 +2,10 @@ #include "EbsdLib/Core/EbsdDataArray.hpp" #include "EbsdLib/Utilities/CanvasUtilities.hpp" +#include "EbsdLib/Utilities/PngWriter.h" #include +#include #include using namespace ebsdlib; @@ -36,6 +38,69 @@ TEST_CASE("ebsdlib::CanvasUtilitiesTest::MirrorImage", "[EbsdLib][CanvasUtilitie REQUIRE(bottomPixel[2] == 0); // B } +// ----------------------------------------------------------------------------- +// Pins down EXACTLY what MirrorImage() does to known pixel data. This is the +// "rotate 180 degrees about the horizontal (X) axis" operation used by +// PoleFigureCompositor when flipFinalImage is set. +// +// Each source pixel encodes its own coordinates: R = x (column), G = y (row). +// After the transform we read each destination pixel and recover which source +// pixel landed there. A 180-degree rotation about the X axis is a vertical +// flip: column x is preserved, row y is reversed (y -> dim-1-y). +// +// For comparison, the alternatives this test distinguishes: +// * vertical flip (about X): dest(x,y) == src(x, dim-1-y) <-- expected +// * horizontal flip (about Y): dest(x,y) == src(dim-1-x, y) +// * 180 in-plane (about Z): dest(x,y) == src(dim-1-x, dim-1-y) +// ----------------------------------------------------------------------------- +TEST_CASE("ebsdlib::CanvasUtilitiesTest::MirrorImageCoordinateMapping", "[EbsdLib][CanvasUtilitiesTest]") +{ + const int dim = 4; + std::vector cDims = {4}; // RGBA + auto src = EbsdDataArray::CreateArray(static_cast(dim) * dim, cDims, "MirrorCoordSrc", true); + + // Encode each pixel's coordinates into its color so the mapping is observable. + for(int y = 0; y < dim; y++) + { + for(int x = 0; x < dim; x++) + { + uint8_t tuple[4] = {static_cast(x), static_cast(y), 0, 255}; + src->setTuple(static_cast(y) * dim + x, tuple); + } + } + + auto result = MirrorImage(src.get(), dim); + REQUIRE(result != nullptr); + REQUIRE(result->getNumberOfTuples() == static_cast(dim) * dim); + REQUIRE(result->getNumberOfComponents() == 4); + + // Every destination pixel must hold the source pixel from the vertically + // mirrored row: dest(x,y) == src(x, dim-1-y). + for(int y = 0; y < dim; y++) + { + for(int x = 0; x < dim; x++) + { + uint8_t* destPixel = result->getTuplePointer(static_cast(y) * dim + x); + const int recoveredSrcX = destPixel[0]; + const int recoveredSrcY = destPixel[1]; + REQUIRE(recoveredSrcX == x); // column preserved + REQUIRE(recoveredSrcY == (dim - 1 - y)); // row reversed + REQUIRE(destPixel[3] == 255); // alpha preserved + } + } + + // Explicit corner checks make the handedness unambiguous: + // top-left dest(0,0) <- src(0, dim-1) (bottom-left) + // top-right dest(dim-1,0) <- src(dim-1, dim-1) (bottom-right) + uint8_t* topLeft = result->getTuplePointer(0); + REQUIRE(topLeft[0] == 0); + REQUIRE(topLeft[1] == dim - 1); + + uint8_t* topRight = result->getTuplePointer(static_cast(dim) - 1); + REQUIRE(topRight[0] == dim - 1); + REQUIRE(topRight[1] == dim - 1); +} + // ----------------------------------------------------------------------------- TEST_CASE("ebsdlib::CanvasUtilitiesTest::RotateImage90About001", "[EbsdLib][CanvasUtilitiesTest]") { @@ -149,3 +214,70 @@ TEST_CASE("ebsdlib::CanvasUtilitiesTest::GeneratePointsOnUnitCircle", "[EbsdLib] REQUIRE(dot == Approx(0.0).margin(1e-10)); } } + +// ----------------------------------------------------------------------------- +// Hidden test (note the leading '.' in the tag): does NOT run as part of the +// normal suite. Run explicitly with: +// ./Bin/EbsdLibUnitTest "[MirrorVisual]" +// +// Renders a recognizable, deliberately asymmetric RGBA image, applies +// MirrorImage() (the "rotate 180 about X" / vertical-flip used by the pole +// figure compositor), and writes both the input and output as PNG files so the +// flip can be inspected by eye. +// ----------------------------------------------------------------------------- +TEST_CASE("ebsdlib::CanvasUtilitiesTest::MirrorImageVisualExport", "[.][MirrorVisual]") +{ + const int dim = 256; + const std::string outDir = "/private/tmp/claude-501/-Users-mjackson-Workspace9-DREAM3DNX/485763c8-b0c7-48d6-aa56-f82ab8220d1b/scratchpad"; + + std::vector cDims = {4}; // RGBA + auto src = EbsdDataArray::CreateArray(static_cast(dim) * dim, cDims, "MirrorVisualSrc", true); + + // Base pattern: a gradient that is unmistakable about orientation. + // R increases left -> right (encodes column x) + // G increases top -> bottom (encodes row y) + for(int y = 0; y < dim; y++) + { + for(int x = 0; x < dim; x++) + { + uint8_t r = static_cast((x * 255) / (dim - 1)); + uint8_t g = static_cast((y * 255) / (dim - 1)); + uint8_t tuple[4] = {r, g, 0, 255}; + src->setTuple(static_cast(y) * dim + x, tuple); + } + } + + // Solid BLUE horizontal bar across the TOP 1/8 of the image. + for(int y = 0; y < dim / 8; y++) + { + for(int x = 0; x < dim; x++) + { + uint8_t tuple[4] = {0, 0, 255, 255}; + src->setTuple(static_cast(y) * dim + x, tuple); + } + } + + // Solid WHITE square marker in the TOP-LEFT corner. + for(int y = 0; y < dim / 8; y++) + { + for(int x = 0; x < dim / 8; x++) + { + uint8_t tuple[4] = {255, 255, 255, 255}; + src->setTuple(static_cast(y) * dim + x, tuple); + } + } + + auto result = MirrorImage(src.get(), dim); + REQUIRE(result != nullptr); + + auto inResult = PngWriter::WriteColorImage(outDir + "/mirror_input.png", dim, dim, 4, src->data()); + auto outResult = PngWriter::WriteColorImage(outDir + "/mirror_output.png", dim, dim, 4, result->data()); + REQUIRE(inResult.first == 0); + REQUIRE(outResult.first == 0); + + // After a vertical flip, the BLUE bar and WHITE marker should be at the BOTTOM. + uint8_t* bottomLeft = result->getTuplePointer(static_cast(dim - 1) * dim); + REQUIRE(bottomLeft[0] == 255); // white marker now bottom-left + REQUIRE(bottomLeft[1] == 255); + REQUIRE(bottomLeft[2] == 255); +} diff --git a/Source/Test/DiscretePoleFigureCompositorTest.cpp b/Source/Test/DiscretePoleFigureCompositorTest.cpp new file mode 100644 index 00000000..7ab40bbf --- /dev/null +++ b/Source/Test/DiscretePoleFigureCompositorTest.cpp @@ -0,0 +1,221 @@ +#include + +#include "EbsdLib/Core/EbsdDataArray.hpp" +#include "EbsdLib/Utilities/DiscretePoleFigureCompositor.h" +#include "EbsdLib/Utilities/PngWriter.h" +#include "EbsdLib/Utilities/PoleFigureCompositor.h" + +#include +#include +#include +#include + +using namespace ebsdlib; + +namespace +{ +FloatArrayType::Pointer MakeEulers(size_t n) +{ + std::vector compDims = {3}; + auto eulers = FloatArrayType::CreateArray(n, compDims, "TestEulers", true); + for(size_t i = 0; i < n; i++) + { + float* ptr = eulers->getTuplePointer(i); + ptr[0] = static_cast((i * 7 + 3) % 360) * 0.0174533f; + ptr[1] = static_cast((i * 13 + 5) % 180) * 0.0174533f; + ptr[2] = static_cast((i * 19 + 11) % 360) * 0.0174533f; + } + return eulers; +} + +CompositePoleFigureConfiguration_t MakeConfig(FloatArrayType* eulers) +{ + CompositePoleFigureConfiguration_t config; + config.eulers = eulers; + config.imageDim = 256; + config.discrete = true; + config.discreteHeatMap = false; + config.laueOpsIndex = 0; // Hexagonal-High (6/mmm) + config.layoutType = PoleFigureLayoutType::Horizontal; + config.phaseName = "TestPhase"; + config.phaseNumber = 1; + config.title = "Discrete Vector Test"; + return config; +} +} // namespace + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::MarkerSprite", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + int size = 0; + std::array red = {1.0f, 0.0f, 0.0f}; + UInt8ArrayType::Pointer sprite = RenderDiscreteMarkerSprite(red, 6.0f, size); + + REQUIRE(sprite != nullptr); + REQUIRE(size >= 12); // diameter ~ 2*r + padding + REQUIRE(size % 2 == 0); // even for centered blits + REQUIRE(sprite->getNumberOfTuples() == static_cast(size) * size); + REQUIRE(sprite->getNumberOfComponents() == 4); + + // Center pixel is opaque red. + uint8_t* center = sprite->getTuplePointer(static_cast(size / 2) * size + size / 2); + REQUIRE(center[3] == 255); + REQUIRE(center[0] > 200); // red channel high + REQUIRE(center[2] < 60); // blue channel low + + // Corner pixel is fully transparent (outside the circle). + uint8_t* corner = sprite->getTuplePointer(0); + REQUIRE(corner[3] == 0); +} + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::ProducesImage", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + auto eulers = MakeEulers(500); + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + + DiscretePoleFigureCompositor compositor; + CompositePoleFigureResult result = compositor.generateCompositeImage(config); + + REQUIRE(result.image != nullptr); + REQUIRE(result.width > 0); + REQUIRE(result.height > 0); + REQUIRE(result.image->getNumberOfComponents() == 4); + REQUIRE(result.image->getNumberOfTuples() == static_cast(result.width) * result.height); + + bool hasNonWhite = false; + for(size_t i = 0; i < result.image->getNumberOfTuples() && !hasNonWhite; i++) + { + uint8_t* px = result.image->getTuplePointer(i); + if(px[0] != 255 || px[1] != 255 || px[2] != 255) + { + hasNonWhite = true; + } + } + REQUIRE(hasNonWhite); +} + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::IsDeterministic", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + auto eulers = MakeEulers(800); + UInt8ArrayType::Pointer reference; + for(int run = 0; run < 10; run++) + { + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + DiscretePoleFigureCompositor compositor; + CompositePoleFigureResult result = compositor.generateCompositeImage(config); + REQUIRE(result.image != nullptr); + if(run == 0) + { + reference = result.image; + continue; + } + REQUIRE(result.image->getSize() == reference->getSize()); + size_t mismatches = 0; + for(size_t i = 0; i < reference->getSize(); i++) + { + if((*reference)[i] != (*result.image)[i]) + { + mismatches++; + } + } + REQUIRE(mismatches == 0); + } +} + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::DispatchRoutesByConfig", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + auto eulers = MakeEulers(400); + + { + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + config.discrete = true; + config.discreteHeatMap = false; + CompositePoleFigureResult result = GeneratePoleFigureComposite(config); + REQUIRE(result.image != nullptr); + REQUIRE(result.width > 0); + } + { + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + config.discrete = false; + config.discreteHeatMap = false; + CompositePoleFigureResult result = GeneratePoleFigureComposite(config); + REQUIRE(result.image != nullptr); + REQUIRE(result.width > 0); + } +} + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::LargePointCountPerformance", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + // 250k orientations * (hex symmetry multiplicities up to 6) => >1M poles per figure. + auto eulers = MakeEulers(250000); + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + config.imageDim = 512; + + const auto start = std::chrono::steady_clock::now(); + CompositePoleFigureResult result = GeneratePoleFigureComposite(config); + const auto elapsed = std::chrono::steady_clock::now() - start; + const double seconds = std::chrono::duration(elapsed).count(); + std::cout << "Discrete >1M-pole render: " << seconds << " s" << std::endl; + + REQUIRE(result.image != nullptr); + // Generous regression guard: decimation+sprite must keep this well under a minute. + // A per-point arc+fill regression would take many minutes and trip this. + REQUIRE(seconds < 60.0); +} + +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::HonorsFlipFinalImage", "[EbsdLib][DiscretePoleFigureCompositorTest]") +{ + auto eulers = MakeEulers(1500); + + auto render = [&](bool flip) { + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + config.flipFinalImage = flip; + return GeneratePoleFigureComposite(config); + }; + CompositePoleFigureResult up = render(true); + CompositePoleFigureResult down = render(false); + REQUIRE(up.image != nullptr); + REQUIRE(down.image != nullptr); + REQUIRE(up.width == down.width); + + // Figure box for family 1 (default order {0,1,2} => display slot 1). + CompositePoleFigureConfiguration_t cfg = MakeConfig(eulers.get()); + LayoutMetrics layout = PoleFigureCompositor::computeLayoutMetrics(cfg); + const auto origin = layout.origins[1]; + const int x0 = static_cast(origin[0] + layout.margins); + const int y0 = static_cast(origin[1] + layout.fontPtSize * 2.0f + layout.margins * 2.0f); + const int dim = cfg.imageDim; + const int W = up.width; + + // Count bytes that differ within the figure-1 box; the marker layer must move. + size_t boxDiffs = 0; + for(int y = y0; y < y0 + dim; y++) + { + for(int x = x0; x < x0 + dim; x++) + { + const size_t idx = (static_cast(y) * W + x) * 4; + for(int c = 0; c < 4; c++) + { + if((*up.image)[idx + c] != (*down.image)[idx + c]) + { + boxDiffs++; + } + } + } + } + REQUIRE(boxDiffs > 0); // markers are vertically mirrored by the flag +} + +// Hidden manual-validation aid. Run explicitly: +// ./Bin/EbsdLibUnitTest "[DiscreteVisual]" +// Writes discrete_markers.png in the current directory for eyeballing vs MTEX/OIM. +TEST_CASE("ebsdlib::DiscretePoleFigureCompositorTest::VisualExport", "[.][DiscreteVisual]") +{ + auto eulers = MakeEulers(2600); + CompositePoleFigureConfiguration_t config = MakeConfig(eulers.get()); + config.imageDim = 512; + + CompositePoleFigureResult result = GeneratePoleFigureComposite(config); + REQUIRE(result.image != nullptr); + auto r = PngWriter::WriteColorImage("./discrete_markers.png", result.width, result.height, 4, result.image->data()); + REQUIRE(r.first == 0); +} diff --git a/Source/Test/FundamentalSectorGeometryTest.cpp b/Source/Test/FundamentalSectorGeometryTest.cpp index 2e8f1101..13899ad1 100644 --- a/Source/Test/FundamentalSectorGeometryTest.cpp +++ b/Source/Test/FundamentalSectorGeometryTest.cpp @@ -1,7 +1,7 @@ #include -#include "EbsdLib/Utilities/FundamentalSectorGeometry.hpp" #include "EbsdLib/Math/EbsdLibMath.h" +#include "EbsdLib/Utilities/FundamentalSectorGeometry.hpp" #include diff --git a/Source/Test/ImageCropTest.cpp b/Source/Test/ImageCropTest.cpp index 4152c1e5..35842ed1 100644 --- a/Source/Test/ImageCropTest.cpp +++ b/Source/Test/ImageCropTest.cpp @@ -12,9 +12,9 @@ #include "EbsdLib/Core/EbsdDataArray.hpp" #include "EbsdLib/Utilities/ImageCrop.hpp" +#include #include #include -#include using namespace ebsdlib; diff --git a/Source/Test/InversePoleFigureTest.cpp b/Source/Test/InversePoleFigureTest.cpp index c24a61ed..85563807 100644 --- a/Source/Test/InversePoleFigureTest.cpp +++ b/Source/Test/InversePoleFigureTest.cpp @@ -85,7 +85,7 @@ ebsdlib::FloatArrayType::Pointer generateSingleCrystalEulers(size_t numOrientati return eulers; } -// Standard orthogonal sample directions: RD=[1,0,0], TD=[0,1,0], ND=[0,0,1] +// Standard orthogonal sample directions: A1=[1,0,0], A2=[0,1,0], A3=[0,0,1] InversePoleFigureConfiguration_t createDefaultConfig(ebsdlib::FloatArrayType* eulers) { InversePoleFigureConfiguration_t config; @@ -97,7 +97,7 @@ InversePoleFigureConfiguration_t createDefaultConfig(ebsdlib::FloatArrayType* eu config.numColors = 32; config.colorMap = "Default"; config.normalizeMRD = true; - config.labels = {"RD", "TD", "ND"}; + config.labels = {"A1", "A2", "A3"}; config.phaseName = "TestPhase"; config.FlipFinalImage = false; return config; @@ -117,7 +117,7 @@ TEST_CASE("ebsdlib::InversePoleFigureTest::Configuration_Fields", "[EbsdLib][Inv config.numColors = 32; config.colorMap = "Default"; config.normalizeMRD = true; - config.labels = {"RD", "TD", "ND"}; + config.labels = {"A1", "A2", "A3"}; config.phaseName = "Phase1"; config.FlipFinalImage = false; @@ -321,7 +321,7 @@ TEST_CASE("ebsdlib::InversePoleFigureTest::GenerateInversePoleFigure_MRD_vs_Coun TEST_CASE("ebsdlib::InversePoleFigureTest::SingleCrystalTexture_Cubic", "[EbsdLib][InversePoleFigureTest]") { // All orientations are identity (0, 0, 0 Euler angles) - // For ND=[0,0,1], the crystal direction in the SST should be [001] + // For A3=[0,0,1], the crystal direction in the SST should be [001] auto eulers = generateSingleCrystalEulers(500, 0.0f, 0.0f, 0.0f); auto ops = LaueOps::GetAllOrientationOps(); auto& cubicOps = *ops[1]; @@ -393,7 +393,7 @@ TEST_CASE("ebsdlib::InversePoleFigureTest::AnnotatedIPFDensity_PropagatesHexConv configAStar.numColors = 16; configAStar.colorMap = "Default"; configAStar.normalizeMRD = false; - configAStar.labels = {"RD", "TD", "ND"}; + configAStar.labels = {"A1", "A2", "A3"}; configAStar.phaseName = "TestHex"; configAStar.FlipFinalImage = false; configAStar.hexConvention = ebsdlib::HexConvention::XParallelAStar; diff --git a/Source/Test/LaueOpsTest.cpp b/Source/Test/LaueOpsTest.cpp index b84583c1..69103121 100644 --- a/Source/Test/LaueOpsTest.cpp +++ b/Source/Test/LaueOpsTest.cpp @@ -24,42 +24,38 @@ using namespace ebsdlib; // ----------------------------------------------------------------------------- -// PR 2i regression tests: getDefaultPoleFigureNames must honor HexConvention. -// Under X||a we follow the OIM/EDAX naming convention for the a-family -// ({"<2-1-10>"}); under X||a* we follow MTEX's choice ({"<11-20>"}). The -// labels are sym-equivalent representatives of the same orbit, but they're -// what the corresponding software ecosystem prints, and a user reading -// EbsdLib output expects to see what their toolchain (OIM vs MTEX) labels. +// getDefaultPoleFigureNames returns the plotted plane-normal families in brace +// (plane-family) notation. The family identity does NOT depend on HexConvention: +// X||a vs X||a* is a 30 deg rotation of the Cartesian basis about c, which only +// moves where the poles land in the figure (handled in the direction tables), +// not which family is plotted. So the labels are identical for both conventions: +// {0001}, {10-10}, {11-20}. ({2-1-10} is a synonym for the a-axis family {11-20}; +// we use the standard {11-20} for both conventions rather than switching titles.) // -// Trigonal classes have two distinct prism families and the OIM/MTEX label -// dichotomy doesn't apply cleanly there — we don't assert difference between -// conventions for those, only that the conv parameter is plumbed (no crash, -// returns three non-empty strings). +// Trigonal classes have their own prism-family structure; we only assert that the +// conv parameter is plumbed (no crash, three non-empty strings). TEST_CASE("ebsdlib::LaueOpsTest::GetDefaultPoleFigureNames_HexConvention", "[EbsdLib][LaueOpsTest]") { - SECTION("HexagonalHigh: a-family label flips between conventions") + SECTION("HexagonalHigh: family labels are convention-independent") { HexagonalOps ops; auto labelsA = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelA); auto labelsAStar = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelAStar); - CHECK(labelsA[0] == "<0001>"); - CHECK(labelsAStar[0] == "<0001>"); - CHECK(labelsA[1] == labelsAStar[1]); // prism slot identical - CHECK(labelsA[2] != labelsAStar[2]); // a-family slot differs - CHECK(labelsA[2] == "<2-1-10>"); - CHECK(labelsAStar[2] == "<11-20>"); + CHECK(labelsA == labelsAStar); // family identity is convention-independent + CHECK(labelsA[0] == "{0001}"); + CHECK(labelsA[1] == "{10-10}"); + CHECK(labelsA[2] == "{11-20}"); } - SECTION("HexagonalLow: same a-family flip as HexagonalHigh") + SECTION("HexagonalLow: same convention-independent labels as HexagonalHigh") { HexagonalLowOps ops; auto labelsA = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelA); auto labelsAStar = ops.getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelAStar); - CHECK(labelsA[0] == "<0001>"); - CHECK(labelsA[1] == labelsAStar[1]); - CHECK(labelsA[2] != labelsAStar[2]); - CHECK(labelsA[2] == "<2-1-10>"); - CHECK(labelsAStar[2] == "<11-20>"); + CHECK(labelsA == labelsAStar); + CHECK(labelsA[0] == "{0001}"); + CHECK(labelsA[1] == "{10-10}"); + CHECK(labelsA[2] == "{11-20}"); } SECTION("Trigonal classes: conv parameter is plumbed without crash") @@ -92,11 +88,11 @@ TEST_CASE("ebsdlib::LaueOpsTest::GetDefaultPoleFigureNames_HexConvention", "[Ebs } // ----------------------------------------------------------------------------- -// PR 2i regression test: HexagonalOps::generatePoleFigure must propagate -// config.hexConvention into its internal getDefaultPoleFigureNames() call. -// Without this, the rendered PF panel labels are stuck on whatever the -// no-arg default returns regardless of caller intent. -TEST_CASE("ebsdlib::LaueOpsTest::GeneratePoleFigure_PropagatesHexConvention", "[EbsdLib][LaueOpsTest]") +// HexagonalOps::generatePoleFigure must assign the correct family labels to the +// three rendered figures. Family labels are convention-independent (the X||a vs +// X||a* choice only rotates pole positions, not family identity), so both +// conventions must yield the standard {0001}/{10-10}/{11-20} titles. +TEST_CASE("ebsdlib::LaueOpsTest::GeneratePoleFigure_AssignsFamilyLabels", "[EbsdLib][LaueOpsTest]") { HexagonalOps ops; @@ -121,12 +117,12 @@ TEST_CASE("ebsdlib::LaueOpsTest::GeneratePoleFigure_PropagatesHexConvention", "[ auto figuresA = ops.generatePoleFigure(cfgA); auto figuresAStar = ops.generatePoleFigure(cfgAStar); - // The renderer assigns the names array to figuresA[i]->getName(); we use - // those to verify the convention-aware string is what made it through. + // The renderer assigns the names array to figuresA[i]->getName(); the family + // labels are convention-independent, so both conventions yield {11-20}. REQUIRE(figuresA.size() == 3ULL); REQUIRE(figuresAStar.size() == 3ULL); - CHECK(figuresA[2]->getName() == "<2-1-10>"); - CHECK(figuresAStar[2]->getName() == "<11-20>"); + CHECK(figuresA[2]->getName() == "{11-20}"); + CHECK(figuresAStar[2]->getName() == "{11-20}"); } // ----------------------------------------------------------------------------- @@ -690,3 +686,136 @@ TEST_CASE("ebsdlib::LaueOpsTest::SymOpGroupClosure", "[EbsdLib][LaueOpsTest]") } } } + +// ----------------------------------------------------------------------------- +// Strict IPF-color assertions for the standard-stereographic-triangle (SST) +// corners of EVERY Laue class. At the identity orientation the crystal frame +// equals the sample frame, so a reference direction maps directly onto that +// crystal direction; the IPF color key then paints the three SST corners as the +// pure primaries. The mapping is universal: +// +// IPF legend corner -> color (TSL key) +// ------------------------------------------------------------------------- +// SST apex (principal axis, chi = 0) -> RED (255, 0, 0) +// eta = etaMin edge corner (chi = chiMax) -> GREEN ( 0,255, 0) +// eta = etaMax edge corner (chi = chiMax) -> BLUE ( 0, 0,255) +// +// Laue class eta[min,max] deg apex green(etaMin) blue(etaMax) +// Cubic m-3m [ 0, 45] [001] [101] [111] +// Cubic-Low m-3 [ 0, 90] [001] [011] eta-max edge +// Hexagonal 6/mmm [ 0, 30] [0001] [2-1-10] [10-10] +// Hexagonal-L 6/m [ 0, 60] [0001] [2-1-10] [11-20] +// Tetragonal 4/mmm [ 0, 45] [001] [100] [110] +// Tetragonal-L 4/m [ 0, 90] [001] [100] [010] +// Trigonal -3m [ -90, -30] [0001] eta-min edge eta-max edge +// Trigonal-L -3 [-120, 0] [0001] eta-min edge eta-max edge +// Orthorhombic mmm [ 0, 90] [001] [100] [010] +// Monoclinic 2/m [ 0, 180] [001] eta-min edge eta-max edge +// Triclinic -1 [ 0, 180] [001] eta-min edge eta-max edge +// +// The all-class section below derives each class's eta range and chiMax from +// getIpfColorAngleLimits() and asserts the universal mapping. Exact pure-primary +// values are additionally asserted at the canonical corners of the high-symmetry +// cubic (m-3m) and hexagonal (6/mmm) triangles. (The exact corners lie on a +// symmetry fold boundary, so the all-class checks sample a hair inside each edge +// and assert the expected primary strictly dominates.) Confirmed against the +// built library; the IPF color is independent of the X||a / X||a* convention. +namespace +{ +ebsdlib::Rgb ipfColorAtDir(const ebsdlib::LaueOps& ops, double x, double y, double z) +{ + double e[3] = {0.0, 0.0, 0.0}; // identity orientation + const double n = std::sqrt(x * x + y * y + z * z); + double d[3] = {x / n, y / n, z / n}; + return ops.generateIPFColor(e, d, false); // default TSL color key +} + +// Direction at azimuth eta and polar angle chi from the c-axis (radians). +ebsdlib::Rgb ipfColorAtEtaChi(const ebsdlib::LaueOps& ops, double eta, double chi) +{ + return ipfColorAtDir(ops, std::sin(chi) * std::cos(eta), std::sin(chi) * std::sin(eta), std::cos(chi)); +} + +void checkExact(ebsdlib::Rgb c, int r, int g, int b, const std::string& what) +{ + INFO(what << " -> R=" << RgbColor::dRed(c) << " G=" << RgbColor::dGreen(c) << " B=" << RgbColor::dBlue(c)); + CHECK(RgbColor::dRed(c) == r); + CHECK(RgbColor::dGreen(c) == g); + CHECK(RgbColor::dBlue(c) == b); +} + +// Assert channel `ch` (0=R, 1=G, 2=B) is the strong, strict dominant. +void checkDominant(ebsdlib::Rgb c, int ch, const std::string& what) +{ + const int v[3] = {RgbColor::dRed(c), RgbColor::dGreen(c), RgbColor::dBlue(c)}; + INFO(what << " -> R=" << v[0] << " G=" << v[1] << " B=" << v[2]); + CHECK(v[ch] >= 200); + CHECK(v[ch] > v[(ch + 1) % 3]); + CHECK(v[ch] > v[(ch + 2) % 3]); +} +} // namespace + +TEST_CASE("ebsdlib::LaueOpsTest::IPFColor_SSTCorners", "[EbsdLib][LaueOpsTest]") +{ + const double c30 = std::sqrt(3.0) / 2.0; // cos(30) == sin(60) + + SECTION("All Laue classes: SST apex=red, eta-min edge=green, eta-max edge=blue") + { + std::vector allOps = LaueOps::GetAllOrientationOps(); + int checked = 0; + for(const auto& op : allOps) + { + if(op == nullptr) + { + continue; + } + const std::string name = op->getNameOfClass(); + const std::array lim = op->getIpfColorAngleLimits(0.0); + const double etaMin = lim[0]; + const double etaMax = lim[1]; + if(!(etaMax > etaMin)) + { + continue; // class has no eta-parameterized SST (skip) + } + // Sample a hair inside each edge to avoid the fold-boundary ambiguity. + const double d = (etaMax - etaMin) * 0.03; + const double gEta = etaMin + d; + const double bEta = etaMax - d; + const double gChi = op->getIpfColorAngleLimits(gEta)[2] * 0.97; + const double bChi = op->getIpfColorAngleLimits(bEta)[2] * 0.97; + + checkExact(ipfColorAtEtaChi(*op, 0.0, 0.0), 255, 0, 0, name + " apex"); + checkDominant(ipfColorAtEtaChi(*op, gEta, gChi), 1, name + " eta-min edge (green)"); + checkDominant(ipfColorAtEtaChi(*op, bEta, bChi), 2, name + " eta-max edge (blue)"); + ++checked; + } + INFO("Laue classes checked: " << checked); + CHECK(checked >= 11); // every Laue class must be exercised + } + + SECTION("Cubic m-3m canonical corners are exact primaries: [001]=R, [011]=G, [111]=B") + { + CubicOps ops; + checkExact(ipfColorAtDir(ops, 0, 0, 1), 255, 0, 0, "[001]"); + checkExact(ipfColorAtDir(ops, 0, 1, 1), 0, 255, 0, "[011]"); + checkExact(ipfColorAtDir(ops, 1, 1, 1), 0, 0, 255, "[111]"); + } + + SECTION("Hexagonal 6/mmm canonical corners are exact primaries: [0001]=R, [2-1-10]=G, [10-10]=B") + { + HexagonalOps ops; + checkExact(ipfColorAtDir(ops, 0, 0, 1), 255, 0, 0, "[0001]"); + checkExact(ipfColorAtDir(ops, 1, 0, 0), 0, 255, 0, "[2-1-10] eta=0"); + checkExact(ipfColorAtDir(ops, c30, 0.5, 0), 0, 0, 255, "[10-10] eta=30"); + } + + // Cross-class contrast: a basal direction near eta=0 is the GREEN side of the + // 6/m wedge [0,60] but the BLUE side of the -3 wedge [-120,0]. + SECTION("Same eta region, different class -> different color") + { + const double oneDeg = ebsdlib::constants::k_PiOver180D; + const double chi90 = ebsdlib::constants::k_PiOver2D; + checkDominant(ipfColorAtEtaChi(HexagonalLowOps(), 1.0 * oneDeg, chi90), 1, "HexLow eta~0 (green)"); + checkDominant(ipfColorAtEtaChi(TrigonalLowOps(), -1.0 * oneDeg, chi90), 2, "TrigLow eta~0 (blue)"); + } +} diff --git a/Source/Test/MarkerOccupancyGridTest.cpp b/Source/Test/MarkerOccupancyGridTest.cpp new file mode 100644 index 00000000..a0ed018a --- /dev/null +++ b/Source/Test/MarkerOccupancyGridTest.cpp @@ -0,0 +1,23 @@ +#include + +#include "EbsdLib/Utilities/MarkerOccupancyGrid.h" + +using namespace ebsdlib; + +TEST_CASE("ebsdlib::MarkerOccupancyGridTest::Decimation", "[EbsdLib][MarkerOccupancyGridTest]") +{ + // 100x100 area at origin (0,0), 10px cells. + MarkerOccupancyGrid grid(0.0f, 0.0f, 100.0f, 100.0f, 10.0f); + + // First point in a cell draws; a second point in the same cell does not. + REQUIRE(grid.shouldDraw(5.0f, 5.0f) == true); + REQUIRE(grid.shouldDraw(6.0f, 4.0f) == false); // same 10px cell + + // A point in a different cell draws. + REQUIRE(grid.shouldDraw(55.0f, 55.0f) == true); + REQUIRE(grid.shouldDraw(59.0f, 51.0f) == false); // same cell as (55,55) + + // Out-of-bounds points never draw. + REQUIRE(grid.shouldDraw(-1.0f, 5.0f) == false); + REQUIRE(grid.shouldDraw(5.0f, 1000.0f) == false); +} diff --git a/Source/Test/PoleFigureCompositorTest.cpp b/Source/Test/PoleFigureCompositorTest.cpp index 0556086e..89f06463 100644 --- a/Source/Test/PoleFigureCompositorTest.cpp +++ b/Source/Test/PoleFigureCompositorTest.cpp @@ -104,7 +104,7 @@ TEST_CASE("ebsdlib::PoleFigureCompositorTest::ConfigDefaults", "[EbsdLib][PoleFi REQUIRE(config.discrete == false); REQUIRE(config.discreteHeatMap == false); REQUIRE(config.colorMap.empty()); - REQUIRE(config.labels.empty()); + REQUIRE(config.poleFigureNames.empty()); REQUIRE(config.order.size() == 3); REQUIRE(config.order[0] == 0); REQUIRE(config.order[1] == 1); @@ -194,8 +194,7 @@ void GeneratePoleFigures(const std::string& phaseName, size_t opsIndex, hid_t ex config.title = fmt::format("Laue Symmetry:{} Rotation Point Group: {}", op->getSymmetryName(), op->getRotationPointGroup()); config.hexConvention = hexConventions[idx]; - PoleFigureCompositor compositor; - CompositePoleFigureResult result = compositor.generateCompositeImage(config); + CompositePoleFigureResult result = GeneratePoleFigureComposite(config); REQUIRE(result.image != nullptr); REQUIRE(result.width > 0); @@ -235,8 +234,8 @@ void GeneratePoleFigures(const std::string& phaseName, size_t opsIndex, hid_t ex const double misMatchFraction = static_cast(misMatchCount) / static_cast(exemplarData.size()); if(misMatchCount > 0) { - std::cout << phaseName << " [" << datasetName << "]: byte mismatches (>1) = " << misMatchCount << " / " << exemplarData.size() << " (" << std::setprecision(4) - << (misMatchFraction * 100.0) << "%)" << std::endl; + std::cout << phaseName << " [" << datasetName << "]: byte mismatches (>1) = " << misMatchCount << " / " << exemplarData.size() << " (" << std::setprecision(4) << (misMatchFraction * 100.0) + << "%)" << std::endl; } REQUIRE(misMatchFraction <= k_PixelMismatchTolerance); #endif @@ -248,14 +247,14 @@ void GeneratePoleFigures(const std::string& phaseName, size_t opsIndex, hid_t ex TEST_CASE("ebsdlib::PoleFigureCompositorTest::All_Laue_Classes", "[EbsdLib][PoleFigureCompositorTest]") { const ebsdlib::unit_test::TestFileSentinel testDataSentinel(ebsdlib::unit_test::k_TestFilesDir, "Laue_Orientation_Clusters_v6.tar.gz", "Laue_Orientation_Clusters_v6", true, true); - const ebsdlib::unit_test::TestFileSentinel testDataSentinel1(ebsdlib::unit_test::k_TestFilesDir, "Pole_Figure_Images_v2.tar.gz", "Pole_Figure_Images_v2" + const ebsdlib::unit_test::TestFileSentinel testDataSentinel1(ebsdlib::unit_test::k_TestFilesDir, "Pole_Figure_Images_v3.tar.gz", "Pole_Figure_Images_v3" #if WRITE_EXEMPLAR_IMAGES , false, false #endif ); - const std::string hdfInputFile = fmt::format("{}/Pole_Figure_Images_v2/Exemplar_Data.h5", ebsdlib::unit_test::k_TestFilesDir); + const std::string hdfInputFile = fmt::format("{}/Pole_Figure_Images_v3/Exemplar_Data.h5", ebsdlib::unit_test::k_TestFilesDir); hid_t fileId = -1; #if WRITE_EXEMPLAR_IMAGES if(!std::filesystem::exists(hdfInputFile)) @@ -411,6 +410,188 @@ TEST_CASE("ebsdlib::PoleFigureCompositorTest::LayoutMetrics_Square", "[EbsdLib][ REQUIRE(metrics.origins[2][1] == Approx(metrics.origins[0][1] + metrics.subCanvasHeight)); } +// ----------------------------------------------------------------------------- +// Repeatedly generating the same composite from identical inputs must produce a +// byte-for-byte identical image. The pipeline (sphere coords, Lambert binning, +// stereographic projection, canvas_ity render, flip + color convert) has no RNG, +// no time-seeding, and every parallel boundary writes to DISJOINT outputs, so the +// result must not vary run-to-run within a single binary. +// ----------------------------------------------------------------------------- +// Hidden cross-process determinism probe. Run explicitly (twice, to different +// files) to confirm separate process invocations are byte-identical: +// ./Bin/EbsdLibUnitTest "[PFDeterminism]" (writes scratchpad/pf_run.png) +// ----------------------------------------------------------------------------- +TEST_CASE("ebsdlib::PoleFigureCompositorTest::CrossProcessDeterminismProbe", "[.][PFDeterminism]") +{ + const size_t numOrientations = 250; + std::vector compDims = {3}; + auto eulers = FloatArrayType::CreateArray(numOrientations, compDims, "TestEulers", true); + for(size_t i = 0; i < numOrientations; i++) + { + float* ptr = eulers->getTuplePointer(i); + ptr[0] = static_cast((i * 7 + 3) % 360) * 0.0174533f; + ptr[1] = static_cast((i * 13 + 5) % 180) * 0.0174533f; + ptr[2] = static_cast((i * 19 + 11) % 360) * 0.0174533f; + } + + CompositePoleFigureConfiguration_t config; + config.eulers = eulers.get(); + config.imageDim = 256; + config.lambertDim = 32; + config.numColors = 16; + config.laueOpsIndex = 1; + config.layoutType = PoleFigureLayoutType::Horizontal; + config.phaseName = "TestPhase"; + config.phaseNumber = 1; + config.title = "Determinism Probe"; + + PoleFigureCompositor compositor; + CompositePoleFigureResult result = compositor.generateCompositeImage(config); + REQUIRE(result.image != nullptr); + + const std::string outDir = "/private/tmp/claude-501/-Users-mjackson-Workspace9-DREAM3DNX/485763c8-b0c7-48d6-aa56-f82ab8220d1b/scratchpad"; + auto writeResult = PngWriter::WriteColorImage(outDir + "/pf_run.png", result.width, result.height, 4, result.image->data()); + REQUIRE(writeResult.first == 0); +} + +// ----------------------------------------------------------------------------- +// Same determinism requirement, but for the DISCRETE pole figure path +// (config.discrete = true), which uses the direct intensity[index]++ accumulation +// in ComputeStereographicProjection rather than the Lambert/MRD path. +// ----------------------------------------------------------------------------- +TEST_CASE("ebsdlib::PoleFigureCompositorTest::RepeatedDiscreteGenerationIsDeterministic", "[EbsdLib][PoleFigureCompositorTest]") +{ + const size_t numOrientations = 2600; + std::vector compDims = {3}; + auto eulers = FloatArrayType::CreateArray(numOrientations, compDims, "TestEulers", true); + for(size_t i = 0; i < numOrientations; i++) + { + float* ptr = eulers->getTuplePointer(i); + ptr[0] = static_cast((i * 7 + 3) % 360) * 0.0174533f; + ptr[1] = static_cast((i * 13 + 5) % 180) * 0.0174533f; + ptr[2] = static_cast((i * 19 + 11) % 360) * 0.0174533f; + } + + auto makeConfig = [&]() { + CompositePoleFigureConfiguration_t config; + config.eulers = eulers.get(); + config.imageDim = 256; + config.lambertDim = 64; + config.numColors = 16; + config.discrete = true; // <-- exercise the discrete accumulation path + config.laueOpsIndex = 0; // Hexagonal-High (6/mmm) to match the reported data + config.layoutType = PoleFigureLayoutType::Horizontal; + config.phaseName = "TestPhase"; + config.phaseNumber = 1; + config.title = "Discrete Determinism Test"; + return config; + }; + + const int numRuns = 25; + UInt8ArrayType::Pointer reference; + size_t worstMismatch = 0; + for(int run = 0; run < numRuns; run++) + { + CompositePoleFigureConfiguration_t config = makeConfig(); + PoleFigureCompositor compositor; + CompositePoleFigureResult result = compositor.generateCompositeImage(config); + REQUIRE(result.image != nullptr); + + if(run == 0) + { + reference = result.image; + continue; + } + + REQUIRE(result.image->getNumberOfTuples() == reference->getNumberOfTuples()); + size_t mismatches = 0; + const size_t total = reference->getSize(); + for(size_t i = 0; i < total; i++) + { + if((*reference)[i] != (*result.image)[i]) + { + mismatches++; + } + } + if(mismatches > worstMismatch) + { + worstMismatch = mismatches; + } + if(mismatches > 0) + { + std::cout << "DISCRETE run " << run << ": " << mismatches << " / " << total << " bytes differ from run 0" << std::endl; + } + } + std::cout << "DISCRETE worst-case mismatch across " << numRuns << " runs: " << worstMismatch << " bytes" << std::endl; + REQUIRE(worstMismatch == 0); +} + +// ----------------------------------------------------------------------------- +TEST_CASE("ebsdlib::PoleFigureCompositorTest::RepeatedGenerationIsDeterministic", "[EbsdLib][PoleFigureCompositorTest]") +{ + const size_t numOrientations = 250; + std::vector compDims = {3}; + auto eulers = FloatArrayType::CreateArray(numOrientations, compDims, "TestEulers", true); + for(size_t i = 0; i < numOrientations; i++) + { + float* ptr = eulers->getTuplePointer(i); + ptr[0] = static_cast((i * 7 + 3) % 360) * 0.0174533f; + ptr[1] = static_cast((i * 13 + 5) % 180) * 0.0174533f; + ptr[2] = static_cast((i * 19 + 11) % 360) * 0.0174533f; + } + + auto makeConfig = [&]() { + CompositePoleFigureConfiguration_t config; + config.eulers = eulers.get(); + config.imageDim = 128; + config.lambertDim = 32; + config.numColors = 16; + config.laueOpsIndex = 1; // CubicOps + config.layoutType = PoleFigureLayoutType::Horizontal; + config.phaseName = "TestPhase"; + config.phaseNumber = 1; + config.title = "Determinism Test"; + return config; + }; + + const int numRuns = 5; + UInt8ArrayType::Pointer reference; + for(int run = 0; run < numRuns; run++) + { + CompositePoleFigureConfiguration_t config = makeConfig(); + PoleFigureCompositor compositor; + CompositePoleFigureResult result = compositor.generateCompositeImage(config); + REQUIRE(result.image != nullptr); + + if(run == 0) + { + reference = result.image; + continue; + } + + REQUIRE(result.image->getNumberOfTuples() == reference->getNumberOfTuples()); + size_t mismatches = 0; + size_t firstMismatch = 0; + const size_t total = reference->getSize(); + for(size_t i = 0; i < total; i++) + { + if((*reference)[i] != (*result.image)[i]) + { + if(mismatches == 0) + { + firstMismatch = i; + } + mismatches++; + } + } + if(mismatches > 0) + { + std::cout << "Run " << run << ": " << mismatches << " / " << total << " bytes differ from run 0 (first at byte " << firstMismatch << ")" << std::endl; + } + REQUIRE(mismatches == 0); + } +} + // ----------------------------------------------------------------------------- TEST_CASE("ebsdlib::PoleFigureCompositorTest::GenerateComposite_Cubic_Horizontal", "[EbsdLib][PoleFigureCompositorTest]") { diff --git a/Source/Test/PoleFigureLaueComparisonTest.cpp b/Source/Test/PoleFigureLaueComparisonTest.cpp index db997dee..268d152a 100644 --- a/Source/Test/PoleFigureLaueComparisonTest.cpp +++ b/Source/Test/PoleFigureLaueComparisonTest.cpp @@ -118,14 +118,18 @@ TEST_CASE("ebsdlib::PoleFigureLaueComparisonTest::GenerateAllLaueClasses", "[Ebs config.numColors = 16; config.discrete = true; config.discreteHeatMap = false; + // This test is compared side-by-side against MTEX (compare_pole_figures_all_laue.m), + // which uses the X||a* basis, so pin X||a* here even though the library default is X||a. + config.hexConvention = ebsdlib::HexConvention::XParallelAStar; config.laueOpsIndex = static_cast(opsIndex); config.layoutType = ebsdlib::PoleFigureLayoutType::Horizontal; config.phaseName = rpg; config.phaseNumber = 1; config.title = fmt::format("{} <{}, {}, {}>", op->getSymmetryName(), k_RefPhi1Deg, k_RefPhiDeg, k_RefPhi2Deg); - PoleFigureCompositor compositor; - CompositePoleFigureResult result = compositor.generateCompositeImage(config); + // Use the routing entry point so discrete (non-heatmap) figures go through the + // vector marker renderer, matching WritePoleFigure / PoleFigureCompositorTest. + CompositePoleFigureResult result = ebsdlib::GeneratePoleFigureComposite(config); REQUIRE(result.image != nullptr); const std::string tifPath = fmt::format("{}/ebsdlib_pole_figure.png", dir); diff --git a/Source/Test/PoleFigureProjectionTest.cpp b/Source/Test/PoleFigureProjectionTest.cpp new file mode 100644 index 00000000..495363fd --- /dev/null +++ b/Source/Test/PoleFigureProjectionTest.cpp @@ -0,0 +1,36 @@ +#include + +#include "EbsdLib/Utilities/PoleFigureProjection.h" + +#include + +using namespace ebsdlib; + +TEST_CASE("ebsdlib::PoleFigureProjectionTest::UpperHemisphere", "[EbsdLib][PoleFigureProjectionTest]") +{ + auto north = StereographicProjectUpperHemisphere(0.0f, 0.0f, 1.0f); + REQUIRE(north[0] == Approx(0.0f)); + REQUIRE(north[1] == Approx(0.0f)); + + auto eqX = StereographicProjectUpperHemisphere(1.0f, 0.0f, 0.0f); + REQUIRE(eqX[0] == Approx(1.0f)); + REQUIRE(eqX[1] == Approx(0.0f)); + + auto eqY = StereographicProjectUpperHemisphere(0.0f, 1.0f, 0.0f); + REQUIRE(eqY[0] == Approx(0.0f)); + REQUIRE(eqY[1] == Approx(1.0f)); + + auto south = StereographicProjectUpperHemisphere(0.0f, 0.0f, -1.0f); // folded up + REQUIRE(south[0] == Approx(0.0f)); + REQUIRE(south[1] == Approx(0.0f)); + + const float s = 0.70710678f; + auto mid = StereographicProjectUpperHemisphere(s, 0.0f, s); + REQUIRE(mid[0] == Approx(s / (1.0f + s))); + REQUIRE(mid[1] == Approx(0.0f)); + + auto folded = StereographicProjectUpperHemisphere(0.5f, -0.5f, -0.70710678f); + auto expected = StereographicProjectUpperHemisphere(-0.5f, 0.5f, 0.70710678f); + REQUIRE(folded[0] == Approx(expected[0])); + REQUIRE(folded[1] == Approx(expected[1])); +} diff --git a/Source/Test/PoleFigureUtilitiesTest.cpp b/Source/Test/PoleFigureUtilitiesTest.cpp index 3d87b9e6..3d1c9508 100644 --- a/Source/Test/PoleFigureUtilitiesTest.cpp +++ b/Source/Test/PoleFigureUtilitiesTest.cpp @@ -25,7 +25,7 @@ TEST_CASE("ebsdlib::PoleFigureUtilitiesTest::PoleFigureConfiguration_t_Fields", config.labels = {"A", "B", "C"}; config.order = {0, 1, 2}; config.phaseName = "Phase1"; - config.FlipFinalImage = true; + config.flipFinalImage = true; REQUIRE(config.imageDim == 256); REQUIRE(config.lambertDim == 64); @@ -39,7 +39,7 @@ TEST_CASE("ebsdlib::PoleFigureUtilitiesTest::PoleFigureConfiguration_t_Fields", REQUIRE(config.labels.size() == 3); REQUIRE(config.order.size() == 3); REQUIRE(config.phaseName == "Phase1"); - REQUIRE(config.FlipFinalImage == true); + REQUIRE(config.flipFinalImage == true); } // -----------------------------------------------------------------------------