diff --git a/CMakeLists.txt b/CMakeLists.txt index e487576d..7635656b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ option(EbsdLib_BUILD_H5SUPPORT "Build H5Support Library" OFF) # set project's name -project(EbsdLibProj VERSION 3.0.0) +project(EbsdLibProj VERSION 3.1.0) # Request C++17 standard, using new CMake variables. diff --git a/CMakePresets.json b/CMakePresets.json index 33226c97..c2808407 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -158,6 +158,10 @@ "generator": "Ninja", "inherits": "ci", "cacheVariables": { + "CMAKE_BUILD_TYPE": { + "type": "STRING", + "value": "Release" + }, "VCPKG_TARGET_TRIPLET": { "type": "STRING", "value": "x64-linux-dynamic" 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/ReadMe.md b/Data/Pole_Figure_Validation/ReadMe.md index d40d65e2..e607808c 100644 --- a/Data/Pole_Figure_Validation/ReadMe.md +++ b/Data/Pole_Figure_Validation/ReadMe.md @@ -37,9 +37,10 @@ unaffected by the ordering choice. | ---- | ---- | | `pole_figure_euler_data.dream3d` | DREAM3D-NX HDF5 holding 12 EMsoftSO3-sampled orientation clouds (Cube, Goss, Brass, Copper, S, S1, S2, R, RC_rd1, RC_rd2, RC_nd1, RC_nd2). Currently informational — the C++ test uses ideal Bunge tuples baked into source, but this file is the canonical source the tuples are mirrored from. | | `pole_figure_data.d3dpipeline` | The DREAM3D-NX pipeline JSON that produced the `.dream3d` file. Re-run via DREAM3D-NX if the orientation list needs to change. | -| `mtex_pole_figure_positions.m` | MATLAB script. Generates the golden CSV from MTEX. | +| `mtex_pole_figure_positions.m` | MATLAB script. Generates **both** golden CSVs from MTEX, one per hex/trig Cartesian convention (a single run writes both files). | | `run_mtex_pole_figure_positions.sh` | zsh wrapper that launches MATLAB headlessly with MTEX initialized. | -| `mtex_pole_figure_positions.csv` | **The committed golden.** Loaded by `PoleFigurePositionTest` at test time and used as the comparison target. Regenerated by the MATLAB script above; the only reason to regenerate is if the canonical orientation list, Laue dispatch, or plane-family table changes. | +| `mtex_pole_figure_positions.csv` | **The committed `X\|\|a*` (MTEX/Oxford) golden.** Loaded by `PoleFigurePositionTest` at test time and always validated. Regenerated by the MATLAB script above; the only reason to regenerate is if the canonical orientation list, Laue dispatch, or plane-family table changes. | +| `mtex_pole_figure_positions_xa.csv` | **The committed `X\|\|a` (TSL/EDAX) golden** — the 3.1 public default convention. Loaded and validated by `PoleFigurePositionTest` *when present*; if absent the test skips the `X\|\|a` pass with a loud warning rather than failing. Produced by the same MATLAB run as the `X\|\|a*` golden. | | `compare_pf_positions.py` | Standalone Python comparator. Diagnostic tool — not used by CI. Useful when investigating a regression because it prints the per-bucket worst-case pairs. The C++ test does the same comparison in-process, so day-to-day CI does not need this script. | | `ReadMe.md` | This file. | @@ -92,8 +93,11 @@ orientations in `pole_figure_euler_data.dream3d`. `PoleFigurePositionTest` and `mtex_pole_figure_positions.m` must agree on this table to the character — it's the bucket-join key. EbsdLib's source of truth is `LaueOps::getDefaultPoleFigureNames()`; MTEX mirrors it in -the script's `laue` struct. Hex/trig classes use the v3 `X||a*` -convention. +the script's `laue` struct. The family **labels are convention-independent** +(brace notation, identical in both goldens); only the hex/trig pole +**positions** differ between the `X||a*` and `X||a` goldens (a 30 deg basis +rotation about c). Every non-hex/trig class produces identical rows in both +files. | `rotation_point_group` | Laue class | Family 0 | Family 1 | Family 2 | | ---------------------- | -------------------- | --------- | ---------- | ---------- | @@ -160,12 +164,18 @@ between the EbsdLib points and the MTEX points (set sizes are ≤ 24, so brute force is fine), and reports the maximum matched distance. The C++ test asserts every bucket's worst-case distance is below `1e-5`. -## Regenerating the golden +## Regenerating the goldens -You only need to regenerate `mtex_pole_figure_positions.csv` if the -canonical orientation list, the Laue dispatch, or the plane-family table -changes — i.e. if the schema of what's being validated changes. Routine -EbsdLib code changes do not need a golden regeneration. +You only need to regenerate the goldens if the canonical orientation list, +the Laue dispatch, or the plane-family table changes — i.e. if the schema of +what's being validated changes. Routine EbsdLib code changes do not need a +golden regeneration. + +A single MATLAB run writes **both** goldens (`mtex_pole_figure_positions.csv` +for `X||a*` and `mtex_pole_figure_positions_xa.csv` for `X||a`). The `X||a` +golden is required for `PoleFigurePositionTest` to actually validate the 3.1 +default convention — until it is committed, the test skips the `X||a` pass +with a warning. To regenerate: @@ -174,9 +184,9 @@ To regenerate: ``` This launches MATLAB headlessly, runs `startup_mtex`, then runs -`mtex_pole_figure_positions.m`, which writes -`mtex_pole_figure_positions.csv` into this same directory. After -regeneration, run the test: +`mtex_pole_figure_positions.m`, which writes both +`mtex_pole_figure_positions.csv` and `mtex_pole_figure_positions_xa.csv` +into this same directory. After regeneration, run the test: ```bash ctest -R "EbsdLib::PoleFigurePositionTest" --verbose 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..a027eb99 100644 --- a/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m +++ b/Data/Pole_Figure_Validation/mtex_pole_figure_positions.m @@ -17,20 +17,29 @@ % orient_id, orient_name, rotation_point_group, symmetry_name, % plane_family, x, y % -% Comparison is then a per-bucket nearest-neighbor match between -% mtex_pole_figure_positions.csv and ebsdlib_pole_figure_positions.csv. +% Comparison is then a per-bucket nearest-neighbor match between the golden +% CSV and ebsdlib_pole_figure_positions.csv. +% +% TWO goldens are emitted, one per hexagonal/trigonal Cartesian convention: +% mtex_pole_figure_positions.csv -> X||a* (MTEX/Oxford) +% mtex_pole_figure_positions_xa.csv -> X||a (TSL/EDAX, the 3.1 default) +% The convention only changes the hex/trig crystalSymmetry alignment (a 30 +% deg basis rotation about c). Every other Laue class ignores it, so those +% rows are identical between the two files — exactly mirroring EbsdLib's +% getDefaultPoleFigureNames()/generateSphereCoordsFromEulers() behavior. +% The plane-family labels are convention-independent (brace notation) and +% MUST match the C++ getDefaultPoleFigureNames() output verbatim. % % Usage: % 1. Run this script in MATLAB (MTEX must be on the path; run % `startup_mtex` first if needed). The companion shell wrapper % run_mtex_pole_figure_positions.sh handles MTEX startup % automatically. -% 2. The CSV is written into the same directory as this script -% (Data/Pole_Figure_Validation/). It is the committed golden against -% which PoleFigurePositionTest.cpp compares the EbsdLib output. +% 2. Both CSVs are written into the same directory as this script +% (Data/Pole_Figure_Validation/). They are the committed goldens +% against which PoleFigurePositionTest.cpp compares the EbsdLib output. scriptDir = fileparts(mfilename('fullpath')); -csvPath = fullfile(scriptDir, 'mtex_pole_figure_positions.csv'); % ----------------------------------------------------------------------------- % Reference Bunge tuples in degrees -- mirror the C++ test exactly. @@ -51,170 +60,187 @@ }; % ----------------------------------------------------------------------------- -% Per-Laue-class mapping. Borrowed from compare_pole_figures_all_laue.m and -% kept in lockstep with EbsdLib's getDefaultPoleFigureNames() output. The -% label strings MUST match the C++ side exactly so the CSV bucket join -% works. -% -% rpg : EbsdLib rotation point group string (also the join key) -% symName : informational label, mirrors LaueOps::getSymmetryName() -% cs : MTEX crystalSymmetry instance -% h : 1x3 cell array of Miller index tuples (3- or 4-element) -% labels : 1x3 cell array of pole figure label strings (must match -% EbsdLib output verbatim, including angle brackets) -% ----------------------------------------------------------------------------- -laue = struct([]); - -laue(end+1).rpg = '432'; -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+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+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+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+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+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+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+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+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+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+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>'}; - +% Conventions to emit. The hexagonal/trigonal crystalSymmetry alignment is +% the only thing that changes per convention; all other Laue classes ignore +% it and produce identical rows in both files. % ----------------------------------------------------------------------------- -% Open CSV and write header -% ----------------------------------------------------------------------------- -fid = fopen(csvPath, 'w'); -if fid < 0 - error('Could not open output CSV: %s', csvPath); -end -fprintf(fid, 'orient_id,orient_name,rotation_point_group,symmetry_name,plane_family,x,y\n'); +conventions = { ... + 'X||a*', fullfile(scriptDir, 'mtex_pole_figure_positions.csv') ; ... + 'X||a', fullfile(scriptDir, 'mtex_pole_figure_positions_xa.csv') ; ... +}; ss = specimenSymmetry('1'); -% Iterate orientations x Laue classes x plane families -for oi = 1:size(canonical, 1) - name = canonical{oi, 1}; - phi1 = canonical{oi, 2} * degree; - Phi = canonical{oi, 3} * degree; - phi2 = canonical{oi, 4} * degree; - orientId = oi - 1; % 0-based to match the C++ test - - for li = 1:numel(laue) - info = laue(li); - cs = info.cs; - ori = orientation.byEuler(phi1, Phi, phi2, cs, ss); - - for fi = 1:3 - idx = info.h{fi}; - if numel(idx) == 4 - m = Miller(idx(1), idx(2), idx(3), idx(4), cs); - else - m = Miller(idx(1), idx(2), idx(3), cs); - end +for ci = 1:size(conventions, 1) + xAlign = conventions{ci, 1}; + csvPath = conventions{ci, 2}; + + % ------------------------------------------------------------------------- + % Per-Laue-class mapping. Borrowed from compare_pole_figures_all_laue.m and + % kept in lockstep with EbsdLib's getDefaultPoleFigureNames() output. The + % label strings MUST match the C++ side exactly so the CSV bucket join + % works. + % + % rpg : EbsdLib rotation point group string (also the join key) + % symName : informational label, mirrors LaueOps::getSymmetryName() + % cs : MTEX crystalSymmetry instance (hex/trig use the current alignment) + % h : 1x3 cell array of Miller index tuples (3- or 4-element) + % labels : 1x3 cell array of pole figure label strings (must match + % EbsdLib output verbatim; convention-independent brace notation) + % ------------------------------------------------------------------------- + laue = struct([]); + + laue(end+1).rpg = '432'; + 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+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+1).rpg = '622'; + laue(end).symName = 'Hexagonal_High 6/mmm'; + laue(end).cs = crystalSymmetry('6/mmm', [1 1 1.6], xAlign); + 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+1).rpg = '6'; + laue(end).symName = 'Hexagonal_Low 6/m'; + laue(end).cs = crystalSymmetry('6/m', [1 1 1.6], xAlign); + 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+1).rpg = '32'; + laue(end).symName = 'Trigonal_High -3m'; + laue(end).cs = crystalSymmetry('-3m', [1 1 1.6], xAlign); + 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+1).rpg = '3'; + laue(end).symName = 'Trigonal_Low -3'; + laue(end).cs = crystalSymmetry('-3', [1 1 1.6], xAlign); + 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+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+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+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+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+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}'}; + + % ------------------------------------------------------------------------- + % Open CSV and write header + % ------------------------------------------------------------------------- + fid = fopen(csvPath, 'w'); + if fid < 0 + error('Could not open output CSV: %s', csvPath); + end + fprintf(fid, 'orient_id,orient_name,rotation_point_group,symmetry_name,plane_family,x,y\n'); + + % Iterate orientations x Laue classes x plane families + for oi = 1:size(canonical, 1) + name = canonical{oi, 1}; + phi1 = canonical{oi, 2} * degree; + Phi = canonical{oi, 3} * degree; + phi2 = canonical{oi, 4} * degree; + orientId = oi - 1; % 0-based to match the C++ test + + for li = 1:numel(laue) + info = laue(li); + cs = info.cs; + ori = orientation.byEuler(phi1, Phi, phi2, cs, ss); + + for fi = 1:3 + idx = info.h{fi}; + if numel(idx) == 4 + m = Miller(idx(1), idx(2), idx(3), idx(4), cs); + else + m = Miller(idx(1), idx(2), idx(3), cs); + end - % Symmetry orbit in crystal frame, then map to sample frame. - % MTEX's symmetrise() returns |cs| entries -- one per symmetry - % operation, including stabilizer ops that fix the pole. EbsdLib - % returns the unique orbit (size = |cs| / |stabilizer|), so we - % dedupe below. - % - % MTEX's Miller cartesian is in *lattice units* -- e.g. Miller([1 1 1]) - % has length sqrt(3), and Miller([0 0 0 1]) for hex with c=1.6 has - % length 1.6. EbsdLib explicitly normalizes its hardcoded direction - % vectors before projection, so we must normalize here too. - mSym = symmetrise(m, cs); - vSample = ori * mSym; % vector3d array, length = |cs| - xs = vSample.x; ys = vSample.y; zs = vSample.z; - mag = sqrt(xs.^2 + ys.^2 + zs.^2); - xs = xs ./ mag; ys = ys ./ mag; zs = zs ./ mag; - - % Dedupe in 3D after normalization (round to 1e-8 to absorb FP noise). - xyzKey = round([xs(:), ys(:), zs(:)] * 1e8) / 1e8; - [~, ia] = unique(xyzKey, 'rows', 'stable'); - xs = xs(ia); ys = ys(ia); zs = zs(ia); - - % Project all directions in this bucket, then emit in sorted - % (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 - % 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 - % regenerated golden is a clean signal of "the goldens moved" - % rather than "MTEX shuffled the rows". - bucketRows = zeros(numel(xs), 2); - for k = 1:numel(xs) - x = xs(k); y = ys(k); z = zs(k); - if z < 0.0 - x = -x; y = -y; z = -z; + % Symmetry orbit in crystal frame, then map to sample frame. + % MTEX's symmetrise() returns |cs| entries -- one per symmetry + % operation, including stabilizer ops that fix the pole. EbsdLib + % returns the unique orbit (size = |cs| / |stabilizer|), so we + % dedupe below. + % + % MTEX's Miller cartesian is in *lattice units* -- e.g. Miller([1 1 1]) + % has length sqrt(3), and Miller([0 0 0 1]) for hex with c=1.6 has + % length 1.6. EbsdLib explicitly normalizes its hardcoded direction + % vectors before projection, so we must normalize here too. + mSym = symmetrise(m, cs); + vSample = ori * mSym; % vector3d array, length = |cs| + xs = vSample.x; ys = vSample.y; zs = vSample.z; + mag = sqrt(xs.^2 + ys.^2 + zs.^2); + xs = xs ./ mag; ys = ys ./ mag; zs = zs ./ mag; + + % Dedupe in 3D after normalization (round to 1e-8 to absorb FP noise). + xyzKey = round([xs(:), ys(:), zs(:)] * 1e8) / 1e8; + [~, ia] = unique(xyzKey, 'rows', 'stable'); + xs = xs(ia); ys = ys(ia); zs = zs(ia); + + % Project all directions in this bucket, then emit in sorted + % (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 + % 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 + % regenerated golden is a clean signal of "the goldens moved" + % rather than "MTEX shuffled the rows". + bucketRows = zeros(numel(xs), 2); + for k = 1:numel(xs) + x = xs(k); y = ys(k); z = zs(k); + if z < 0.0 + x = -x; y = -y; z = -z; + end + bucketRows(k, 1) = x / (1.0 + z); + bucketRows(k, 2) = y / (1.0 + z); end - bucketRows(k, 1) = x / (1.0 + z); - bucketRows(k, 2) = y / (1.0 + z); - end - bucketRows = sortrows(round(bucketRows * 1e8) / 1e8); + bucketRows = sortrows(round(bucketRows * 1e8) / 1e8); - for k = 1:size(bucketRows, 1) - fprintf(fid, '%d,%s,%s,%s,%s,%.8f,%.8f\n', ... - orientId, name, info.rpg, info.symName, info.labels{fi}, ... - bucketRows(k, 1), bucketRows(k, 2)); + for k = 1:size(bucketRows, 1) + fprintf(fid, '%d,%s,%s,%s,%s,%.8f,%.8f\n', ... + orientId, name, info.rpg, info.symName, info.labels{fi}, ... + bucketRows(k, 1), bucketRows(k, 2)); + end end end end + + fclose(fid); + fprintf('Wrote %s\n', csvPath); end -fclose(fid); -fprintf('Wrote %s\n', csvPath); -fprintf('This is the committed golden -- PoleFigurePositionTest.cpp loads it\n'); -fprintf('and runs the comparison automatically. See ReadMe.md in this directory.\n'); +fprintf('These are the committed goldens -- PoleFigurePositionTest.cpp loads\n'); +fprintf('mtex_pole_figure_positions.csv (X||a*) always, and\n'); +fprintf('mtex_pole_figure_positions_xa.csv (X||a) when present. See ReadMe.md.\n'); diff --git a/Data/Pole_Figure_Validation/mtex_pole_figure_positions_xa.csv b/Data/Pole_Figure_Validation/mtex_pole_figure_positions_xa.csv new file mode 100644 index 00000000..77f61f80 --- /dev/null +++ b/Data/Pole_Figure_Validation/mtex_pole_figure_positions_xa.csv @@ -0,0 +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},-0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},-0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.00000000,-1.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.00000000,-1.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{10-10},0.86602540,-0.50000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},-0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.50000000,-0.86602540 +0,Cube,622,Hexagonal_High 6/mmm,{11-20},0.50000000,-0.86602540 +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},-0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},-0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.00000000,-1.00000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.00000000,-1.00000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{10-10},0.86602540,-0.50000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-0.50000000,-0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{11-20},-0.50000000,-0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{11-20},0.50000000,-0.86602540 +0,Cube,6,Hexagonal_Low 6/m,{11-20},0.50000000,-0.86602540 +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},-0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{0-110},-0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{0-110},0.00000000,-1.00000000 +0,Cube,32,Trigonal_High -3m,{0-110},0.00000000,-1.00000000 +0,Cube,32,Trigonal_High -3m,{0-110},0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{0-110},0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{1-100},-0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{1-100},-0.86602540,-0.50000000 +0,Cube,32,Trigonal_High -3m,{1-100},-0.86602540,0.50000000 +0,Cube,32,Trigonal_High -3m,{1-100},0.00000000,-1.00000000 +0,Cube,32,Trigonal_High -3m,{1-100},0.00000000,-1.00000000 +0,Cube,32,Trigonal_High -3m,{1-100},0.86602540,-0.50000000 +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},-1.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{-1-120},-1.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{-1-120},-0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{-1-120},-0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{-1-120},0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{-1-120},0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +0,Cube,3,Trigonal_Low -3,{2-1-10},-0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{2-1-10},-0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{2-1-10},0.50000000,-0.86602540 +0,Cube,3,Trigonal_Low -3,{2-1-10},0.50000000,-0.86602540 +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.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},-0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.41421356 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{10-10},0.63981621,0.26120387 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},-0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},0.31010205,0.37979590 +1,Goss,622,Hexagonal_High 6/mmm,{11-20},0.31010205,0.37979590 +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.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{10-10},-0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.41421356 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{10-10},0.63981621,0.26120387 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{11-20},-0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{11-20},0.31010205,0.37979590 +1,Goss,6,Hexagonal_Low 6/m,{11-20},0.31010205,0.37979590 +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.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{0-110},-0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{0-110},-0.00000000,0.41421356 +1,Goss,32,Trigonal_High -3m,{0-110},-0.00000000,0.41421356 +1,Goss,32,Trigonal_High -3m,{0-110},0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{0-110},0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{1-100},-0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{1-100},-0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{1-100},0.00000000,0.41421356 +1,Goss,32,Trigonal_High -3m,{1-100},0.00000000,0.41421356 +1,Goss,32,Trigonal_High -3m,{1-100},0.63981621,0.26120387 +1,Goss,32,Trigonal_High -3m,{1-100},0.63981621,0.26120387 +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},-1.00000000,-0.00000000 +1,Goss,3,Trigonal_Low -3,{-1-120},-1.00000000,-0.00000000 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{-1-120},-0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{-1-120},0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{-1-120},0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +1,Goss,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{2-1-10},-0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{2-1-10},0.31010205,0.37979590 +1,Goss,3,Trigonal_Low -3,{2-1-10},0.31010205,0.37979590 +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.67392715,-0.15301781 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},-0.67392715,-0.15301781 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},-0.23758314,0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},-0.23758314,0.33930389 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.37428637,0.58094919 +2,Brass,622,Hexagonal_High 6/mmm,{10-10},0.37428637,0.58094919 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.81915204,-0.57357644 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.81915204,-0.57357644 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.47186271,0.13324336 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},-0.47186271,0.13324336 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},0.03617875,0.48897782 +2,Brass,622,Hexagonal_High 6/mmm,{11-20},0.03617875,0.48897782 +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.67392715,-0.15301781 +2,Brass,6,Hexagonal_Low 6/m,{10-10},-0.67392715,-0.15301781 +2,Brass,6,Hexagonal_Low 6/m,{10-10},-0.23758314,0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{10-10},-0.23758314,0.33930389 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.37428637,0.58094919 +2,Brass,6,Hexagonal_Low 6/m,{10-10},0.37428637,0.58094919 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.81915204,-0.57357644 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.81915204,-0.57357644 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.47186271,0.13324336 +2,Brass,6,Hexagonal_Low 6/m,{11-20},-0.47186271,0.13324336 +2,Brass,6,Hexagonal_Low 6/m,{11-20},0.03617875,0.48897782 +2,Brass,6,Hexagonal_Low 6/m,{11-20},0.03617875,0.48897782 +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.67392715,-0.15301781 +2,Brass,32,Trigonal_High -3m,{0-110},-0.67392715,-0.15301781 +2,Brass,32,Trigonal_High -3m,{0-110},-0.23758314,0.33930389 +2,Brass,32,Trigonal_High -3m,{0-110},-0.23758314,0.33930389 +2,Brass,32,Trigonal_High -3m,{0-110},0.37428637,0.58094919 +2,Brass,32,Trigonal_High -3m,{0-110},0.37428637,0.58094919 +2,Brass,32,Trigonal_High -3m,{1-100},-0.67392715,-0.15301781 +2,Brass,32,Trigonal_High -3m,{1-100},-0.67392715,-0.15301781 +2,Brass,32,Trigonal_High -3m,{1-100},-0.23758314,0.33930389 +2,Brass,32,Trigonal_High -3m,{1-100},-0.23758314,0.33930389 +2,Brass,32,Trigonal_High -3m,{1-100},0.37428637,0.58094919 +2,Brass,32,Trigonal_High -3m,{1-100},0.37428637,0.58094919 +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.81915204,-0.57357644 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.81915204,-0.57357644 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.47186271,0.13324336 +2,Brass,3,Trigonal_Low -3,{-1-120},-0.47186271,0.13324336 +2,Brass,3,Trigonal_Low -3,{-1-120},0.03617875,0.48897782 +2,Brass,3,Trigonal_Low -3,{-1-120},0.03617875,0.48897782 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.81915204,-0.57357644 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.81915204,-0.57357644 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.47186271,0.13324336 +2,Brass,3,Trigonal_Low -3,{2-1-10},-0.47186271,0.13324336 +2,Brass,3,Trigonal_Low -3,{2-1-10},0.03617875,0.48897782 +2,Brass,3,Trigonal_Low -3,{2-1-10},0.03617875,0.48897782 +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.60452159,-0.45318449 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.60452159,-0.45318449 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.44383848,0.22854812 +4,S,622,Hexagonal_High 6/mmm,{10-10},-0.44383848,0.22854812 +4,S,622,Hexagonal_High 6/mmm,{10-10},0.04451583,0.71014161 +4,S,622,Hexagonal_High 6/mmm,{10-10},0.04451583,0.71014161 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.56796689,-0.08099711 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.56796689,-0.08099711 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.24484029,0.49188327 +4,S,622,Hexagonal_High 6/mmm,{11-20},-0.24484029,0.49188327 +4,S,622,Hexagonal_High 6/mmm,{11-20},0.46389385,0.85072490 +4,S,622,Hexagonal_High 6/mmm,{11-20},0.46389385,0.85072490 +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.60452159,-0.45318449 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.60452159,-0.45318449 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.44383848,0.22854812 +4,S,6,Hexagonal_Low 6/m,{10-10},-0.44383848,0.22854812 +4,S,6,Hexagonal_Low 6/m,{10-10},0.04451583,0.71014161 +4,S,6,Hexagonal_Low 6/m,{10-10},0.04451583,0.71014161 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.56796689,-0.08099711 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.56796689,-0.08099711 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.24484029,0.49188327 +4,S,6,Hexagonal_Low 6/m,{11-20},-0.24484029,0.49188327 +4,S,6,Hexagonal_Low 6/m,{11-20},0.46389385,0.85072490 +4,S,6,Hexagonal_Low 6/m,{11-20},0.46389385,0.85072490 +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.60452159,-0.45318449 +4,S,32,Trigonal_High -3m,{0-110},-0.60452159,-0.45318449 +4,S,32,Trigonal_High -3m,{0-110},-0.44383848,0.22854812 +4,S,32,Trigonal_High -3m,{0-110},-0.44383848,0.22854812 +4,S,32,Trigonal_High -3m,{0-110},0.04451583,0.71014161 +4,S,32,Trigonal_High -3m,{0-110},0.04451583,0.71014161 +4,S,32,Trigonal_High -3m,{1-100},-0.60452159,-0.45318449 +4,S,32,Trigonal_High -3m,{1-100},-0.60452159,-0.45318449 +4,S,32,Trigonal_High -3m,{1-100},-0.44383848,0.22854812 +4,S,32,Trigonal_High -3m,{1-100},-0.44383848,0.22854812 +4,S,32,Trigonal_High -3m,{1-100},0.04451583,0.71014161 +4,S,32,Trigonal_High -3m,{1-100},0.04451583,0.71014161 +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.56796689,-0.08099711 +4,S,3,Trigonal_Low -3,{-1-120},-0.56796689,-0.08099711 +4,S,3,Trigonal_Low -3,{-1-120},-0.24484029,0.49188327 +4,S,3,Trigonal_Low -3,{-1-120},-0.24484029,0.49188327 +4,S,3,Trigonal_Low -3,{-1-120},0.46389385,0.85072490 +4,S,3,Trigonal_Low -3,{-1-120},0.46389385,0.85072490 +4,S,3,Trigonal_Low -3,{2-1-10},-0.56796689,-0.08099711 +4,S,3,Trigonal_Low -3,{2-1-10},-0.56796689,-0.08099711 +4,S,3,Trigonal_Low -3,{2-1-10},-0.24484029,0.49188327 +4,S,3,Trigonal_Low -3,{2-1-10},-0.24484029,0.49188327 +4,S,3,Trigonal_Low -3,{2-1-10},0.46389385,0.85072490 +4,S,3,Trigonal_Low -3,{2-1-10},0.46389385,0.85072490 +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.67666040,-0.43958718 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.67666040,-0.43958718 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.50510566,0.28265703 +5,S1,622,Hexagonal_High 6/mmm,{10-10},-0.50510566,0.28265703 +5,S1,622,Hexagonal_High 6/mmm,{10-10},0.04891828,0.74287571 +5,S1,622,Hexagonal_High 6/mmm,{10-10},0.04891828,0.74287571 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.64565634,-0.04465702 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.64565634,-0.04465702 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.27563271,0.54803588 +5,S1,622,Hexagonal_High 6/mmm,{11-20},-0.27563271,0.54803588 +5,S1,622,Hexagonal_High 6/mmm,{11-20},0.48828647,0.82344401 +5,S1,622,Hexagonal_High 6/mmm,{11-20},0.48828647,0.82344401 +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.67666040,-0.43958718 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.67666040,-0.43958718 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.50510566,0.28265703 +5,S1,6,Hexagonal_Low 6/m,{10-10},-0.50510566,0.28265703 +5,S1,6,Hexagonal_Low 6/m,{10-10},0.04891828,0.74287571 +5,S1,6,Hexagonal_Low 6/m,{10-10},0.04891828,0.74287571 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.64565634,-0.04465702 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.64565634,-0.04465702 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.27563271,0.54803588 +5,S1,6,Hexagonal_Low 6/m,{11-20},-0.27563271,0.54803588 +5,S1,6,Hexagonal_Low 6/m,{11-20},0.48828647,0.82344401 +5,S1,6,Hexagonal_Low 6/m,{11-20},0.48828647,0.82344401 +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.67666040,-0.43958718 +5,S1,32,Trigonal_High -3m,{0-110},-0.67666040,-0.43958718 +5,S1,32,Trigonal_High -3m,{0-110},-0.50510566,0.28265703 +5,S1,32,Trigonal_High -3m,{0-110},-0.50510566,0.28265703 +5,S1,32,Trigonal_High -3m,{0-110},0.04891828,0.74287571 +5,S1,32,Trigonal_High -3m,{0-110},0.04891828,0.74287571 +5,S1,32,Trigonal_High -3m,{1-100},-0.67666040,-0.43958718 +5,S1,32,Trigonal_High -3m,{1-100},-0.67666040,-0.43958718 +5,S1,32,Trigonal_High -3m,{1-100},-0.50510566,0.28265703 +5,S1,32,Trigonal_High -3m,{1-100},-0.50510566,0.28265703 +5,S1,32,Trigonal_High -3m,{1-100},0.04891828,0.74287571 +5,S1,32,Trigonal_High -3m,{1-100},0.04891828,0.74287571 +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.64565634,-0.04465702 +5,S1,3,Trigonal_Low -3,{-1-120},-0.64565634,-0.04465702 +5,S1,3,Trigonal_Low -3,{-1-120},-0.27563271,0.54803588 +5,S1,3,Trigonal_Low -3,{-1-120},-0.27563271,0.54803588 +5,S1,3,Trigonal_Low -3,{-1-120},0.48828647,0.82344401 +5,S1,3,Trigonal_Low -3,{-1-120},0.48828647,0.82344401 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.64565634,-0.04465702 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.64565634,-0.04465702 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.27563271,0.54803588 +5,S1,3,Trigonal_Low -3,{2-1-10},-0.27563271,0.54803588 +5,S1,3,Trigonal_Low -3,{2-1-10},0.48828647,0.82344401 +5,S1,3,Trigonal_Low -3,{2-1-10},0.48828647,0.82344401 +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.71285088,-0.31878850 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.71285088,-0.31878850 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.40642406,0.32798615 +6,S2,622,Hexagonal_High 6/mmm,{10-10},-0.40642406,0.32798615 +6,S2,622,Hexagonal_High 6/mmm,{10-10},0.18585277,0.68582873 +6,S2,622,Hexagonal_High 6/mmm,{10-10},0.18585277,0.68582873 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.59873985,0.04687292 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.59873985,0.04687292 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.14878083,0.54202863 +6,S2,622,Hexagonal_High 6/mmm,{11-20},-0.14878083,0.54202863 +6,S2,622,Hexagonal_High 6/mmm,{11-20},0.62279896,0.71895801 +6,S2,622,Hexagonal_High 6/mmm,{11-20},0.62279896,0.71895801 +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.71285088,-0.31878850 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.71285088,-0.31878850 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.40642406,0.32798615 +6,S2,6,Hexagonal_Low 6/m,{10-10},-0.40642406,0.32798615 +6,S2,6,Hexagonal_Low 6/m,{10-10},0.18585277,0.68582873 +6,S2,6,Hexagonal_Low 6/m,{10-10},0.18585277,0.68582873 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.59873985,0.04687292 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.59873985,0.04687292 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.14878083,0.54202863 +6,S2,6,Hexagonal_Low 6/m,{11-20},-0.14878083,0.54202863 +6,S2,6,Hexagonal_Low 6/m,{11-20},0.62279896,0.71895801 +6,S2,6,Hexagonal_Low 6/m,{11-20},0.62279896,0.71895801 +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.71285088,-0.31878850 +6,S2,32,Trigonal_High -3m,{0-110},-0.71285088,-0.31878850 +6,S2,32,Trigonal_High -3m,{0-110},-0.40642406,0.32798615 +6,S2,32,Trigonal_High -3m,{0-110},-0.40642406,0.32798615 +6,S2,32,Trigonal_High -3m,{0-110},0.18585277,0.68582873 +6,S2,32,Trigonal_High -3m,{0-110},0.18585277,0.68582873 +6,S2,32,Trigonal_High -3m,{1-100},-0.71285088,-0.31878850 +6,S2,32,Trigonal_High -3m,{1-100},-0.71285088,-0.31878850 +6,S2,32,Trigonal_High -3m,{1-100},-0.40642406,0.32798615 +6,S2,32,Trigonal_High -3m,{1-100},-0.40642406,0.32798615 +6,S2,32,Trigonal_High -3m,{1-100},0.18585277,0.68582873 +6,S2,32,Trigonal_High -3m,{1-100},0.18585277,0.68582873 +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.59873985,0.04687292 +6,S2,3,Trigonal_Low -3,{-1-120},-0.59873985,0.04687292 +6,S2,3,Trigonal_Low -3,{-1-120},-0.14878083,0.54202863 +6,S2,3,Trigonal_Low -3,{-1-120},-0.14878083,0.54202863 +6,S2,3,Trigonal_Low -3,{-1-120},0.62279896,0.71895801 +6,S2,3,Trigonal_Low -3,{-1-120},0.62279896,0.71895801 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.59873985,0.04687292 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.59873985,0.04687292 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.14878083,0.54202863 +6,S2,3,Trigonal_Low -3,{2-1-10},-0.14878083,0.54202863 +6,S2,3,Trigonal_Low -3,{2-1-10},0.62279896,0.71895801 +6,S2,3,Trigonal_Low -3,{2-1-10},0.62279896,0.71895801 +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.54406891,-0.74073678 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.54406891,-0.74073678 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.23170848,-0.11285166 +7,R,622,Hexagonal_High 6/mmm,{10-10},-0.23170848,-0.11285166 +7,R,622,Hexagonal_High 6/mmm,{10-10},0.08671073,0.33019107 +7,R,622,Hexagonal_High 6/mmm,{10-10},0.08671073,0.33019107 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.38059150,-0.37699423 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.38059150,-0.37699423 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.08215818,0.11174997 +7,R,622,Hexagonal_High 6/mmm,{11-20},-0.08215818,0.11174997 +7,R,622,Hexagonal_High 6/mmm,{11-20},0.30551848,0.57174576 +7,R,622,Hexagonal_High 6/mmm,{11-20},0.30551848,0.57174576 +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.54406891,-0.74073678 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.54406891,-0.74073678 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.23170848,-0.11285166 +7,R,6,Hexagonal_Low 6/m,{10-10},-0.23170848,-0.11285166 +7,R,6,Hexagonal_Low 6/m,{10-10},0.08671073,0.33019107 +7,R,6,Hexagonal_Low 6/m,{10-10},0.08671073,0.33019107 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.38059150,-0.37699423 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.38059150,-0.37699423 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.08215818,0.11174997 +7,R,6,Hexagonal_Low 6/m,{11-20},-0.08215818,0.11174997 +7,R,6,Hexagonal_Low 6/m,{11-20},0.30551848,0.57174576 +7,R,6,Hexagonal_Low 6/m,{11-20},0.30551848,0.57174576 +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.54406891,-0.74073678 +7,R,32,Trigonal_High -3m,{0-110},-0.54406891,-0.74073678 +7,R,32,Trigonal_High -3m,{0-110},-0.23170848,-0.11285166 +7,R,32,Trigonal_High -3m,{0-110},-0.23170848,-0.11285166 +7,R,32,Trigonal_High -3m,{0-110},0.08671073,0.33019107 +7,R,32,Trigonal_High -3m,{0-110},0.08671073,0.33019107 +7,R,32,Trigonal_High -3m,{1-100},-0.54406891,-0.74073678 +7,R,32,Trigonal_High -3m,{1-100},-0.54406891,-0.74073678 +7,R,32,Trigonal_High -3m,{1-100},-0.23170848,-0.11285166 +7,R,32,Trigonal_High -3m,{1-100},-0.23170848,-0.11285166 +7,R,32,Trigonal_High -3m,{1-100},0.08671073,0.33019107 +7,R,32,Trigonal_High -3m,{1-100},0.08671073,0.33019107 +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.38059150,-0.37699423 +7,R,3,Trigonal_Low -3,{-1-120},-0.38059150,-0.37699423 +7,R,3,Trigonal_Low -3,{-1-120},-0.08215818,0.11174997 +7,R,3,Trigonal_Low -3,{-1-120},-0.08215818,0.11174997 +7,R,3,Trigonal_Low -3,{-1-120},0.30551848,0.57174576 +7,R,3,Trigonal_Low -3,{-1-120},0.30551848,0.57174576 +7,R,3,Trigonal_Low -3,{2-1-10},-0.38059150,-0.37699423 +7,R,3,Trigonal_Low -3,{2-1-10},-0.38059150,-0.37699423 +7,R,3,Trigonal_Low -3,{2-1-10},-0.08215818,0.11174997 +7,R,3,Trigonal_Low -3,{2-1-10},-0.08215818,0.11174997 +7,R,3,Trigonal_Low -3,{2-1-10},0.30551848,0.57174576 +7,R,3,Trigonal_Low -3,{2-1-10},0.30551848,0.57174576 +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.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},-0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.70020754 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.70020754 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{10-10},0.73955419,0.40123166 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,0.00000000 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,0.00000000 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},-0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},0.38574350,0.62783433 +8,RC_rd1,622,Hexagonal_High 6/mmm,{11-20},0.38574350,0.62783433 +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.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},-0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.70020754 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.70020754 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{10-10},0.73955419,0.40123166 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-1.00000000,0.00000000 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-1.00000000,0.00000000 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},-0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},0.38574350,0.62783433 +8,RC_rd1,6,Hexagonal_Low 6/m,{11-20},0.38574350,0.62783433 +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.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{0-110},-0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{0-110},-0.00000000,0.70020754 +8,RC_rd1,32,Trigonal_High -3m,{0-110},-0.00000000,0.70020754 +8,RC_rd1,32,Trigonal_High -3m,{0-110},0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{0-110},0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{1-100},-0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{1-100},-0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.00000000,0.70020754 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.00000000,0.70020754 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.73955419,0.40123166 +8,RC_rd1,32,Trigonal_High -3m,{1-100},0.73955419,0.40123166 +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},-1.00000000,0.00000000 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},-1.00000000,0.00000000 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},-0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},-0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{-1-120},0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},-0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.38574350,0.62783433 +8,RC_rd1,3,Trigonal_Low -3,{2-1-10},0.38574350,0.62783433 +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.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},-0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.52056705 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.00000000,0.52056705 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{10-10},0.67301316,0.31829326 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-1.00000000,-0.00000000 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},-0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},0.33406119,0.47397035 +9,RC_rd2,622,Hexagonal_High 6/mmm,{11-20},0.33406119,0.47397035 +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.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},-0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.52056705 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.00000000,0.52056705 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{10-10},0.67301316,0.31829326 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-1.00000000,-0.00000000 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},-0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},0.33406119,0.47397035 +9,RC_rd2,6,Hexagonal_Low 6/m,{11-20},0.33406119,0.47397035 +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.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{0-110},-0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{0-110},-0.00000000,0.52056705 +9,RC_rd2,32,Trigonal_High -3m,{0-110},-0.00000000,0.52056705 +9,RC_rd2,32,Trigonal_High -3m,{0-110},0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{0-110},0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{1-100},-0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{1-100},-0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.00000000,0.52056705 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.00000000,0.52056705 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.67301316,0.31829326 +9,RC_rd2,32,Trigonal_High -3m,{1-100},0.67301316,0.31829326 +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},-1.00000000,-0.00000000 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-1.00000000,-0.00000000 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},-0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{-1-120},0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-1.00000000,-0.00000000 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},-0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},0.33406119,0.47397035 +9,RC_rd2,3,Trigonal_Low -3,{2-1-10},0.33406119,0.47397035 +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.64278761,-0.76604444 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},-0.64278761,-0.76604444 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.34202014,-0.93969262 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.34202014,-0.93969262 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.98480775,-0.17364818 +10,RC_nd1,622,Hexagonal_High 6/mmm,{10-10},0.98480775,-0.17364818 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.93969262,-0.34202014 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.93969262,-0.34202014 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.17364818,-0.98480775 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},-0.17364818,-0.98480775 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.76604444,-0.64278761 +10,RC_nd1,622,Hexagonal_High 6/mmm,{11-20},0.76604444,-0.64278761 +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.64278761,-0.76604444 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},-0.64278761,-0.76604444 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.34202014,-0.93969262 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.34202014,-0.93969262 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.98480775,-0.17364818 +10,RC_nd1,6,Hexagonal_Low 6/m,{10-10},0.98480775,-0.17364818 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.93969262,-0.34202014 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.93969262,-0.34202014 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.17364818,-0.98480775 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},-0.17364818,-0.98480775 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},0.76604444,-0.64278761 +10,RC_nd1,6,Hexagonal_Low 6/m,{11-20},0.76604444,-0.64278761 +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.64278761,-0.76604444 +10,RC_nd1,32,Trigonal_High -3m,{0-110},-0.64278761,-0.76604444 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.34202014,-0.93969262 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.34202014,-0.93969262 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.98480775,-0.17364818 +10,RC_nd1,32,Trigonal_High -3m,{0-110},0.98480775,-0.17364818 +10,RC_nd1,32,Trigonal_High -3m,{1-100},-0.98480775,0.17364818 +10,RC_nd1,32,Trigonal_High -3m,{1-100},-0.64278761,-0.76604444 +10,RC_nd1,32,Trigonal_High -3m,{1-100},-0.64278761,-0.76604444 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.34202014,-0.93969262 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.34202014,-0.93969262 +10,RC_nd1,32,Trigonal_High -3m,{1-100},0.98480775,-0.17364818 +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.93969262,-0.34202014 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.93969262,-0.34202014 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.17364818,-0.98480775 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},-0.17364818,-0.98480775 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},0.76604444,-0.64278761 +10,RC_nd1,3,Trigonal_Low -3,{-1-120},0.76604444,-0.64278761 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.93969262,-0.34202014 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.93969262,-0.34202014 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.17364818,-0.98480775 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},-0.17364818,-0.98480775 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},0.76604444,-0.64278761 +10,RC_nd1,3,Trigonal_Low -3,{2-1-10},0.76604444,-0.64278761 +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.42261826,-0.90630779 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},-0.42261826,-0.90630779 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.57357644,-0.81915204 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.57357644,-0.81915204 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.99619470,0.08715574 +11,RC_nd2,622,Hexagonal_High 6/mmm,{10-10},0.99619470,0.08715574 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},-0.81915204,-0.57357644 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},-0.81915204,-0.57357644 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.08715574,-0.99619470 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.08715574,-0.99619470 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.90630779,-0.42261826 +11,RC_nd2,622,Hexagonal_High 6/mmm,{11-20},0.90630779,-0.42261826 +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.42261826,-0.90630779 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},-0.42261826,-0.90630779 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.57357644,-0.81915204 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.57357644,-0.81915204 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.99619470,0.08715574 +11,RC_nd2,6,Hexagonal_Low 6/m,{10-10},0.99619470,0.08715574 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},-0.81915204,-0.57357644 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},-0.81915204,-0.57357644 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.08715574,-0.99619470 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.08715574,-0.99619470 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.90630779,-0.42261826 +11,RC_nd2,6,Hexagonal_Low 6/m,{11-20},0.90630779,-0.42261826 +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.42261826,-0.90630779 +11,RC_nd2,32,Trigonal_High -3m,{0-110},-0.42261826,-0.90630779 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.57357644,-0.81915204 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.57357644,-0.81915204 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.99619470,0.08715574 +11,RC_nd2,32,Trigonal_High -3m,{0-110},0.99619470,0.08715574 +11,RC_nd2,32,Trigonal_High -3m,{1-100},-0.99619470,-0.08715574 +11,RC_nd2,32,Trigonal_High -3m,{1-100},-0.42261826,-0.90630779 +11,RC_nd2,32,Trigonal_High -3m,{1-100},-0.42261826,-0.90630779 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.57357644,-0.81915204 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.57357644,-0.81915204 +11,RC_nd2,32,Trigonal_High -3m,{1-100},0.99619470,0.08715574 +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.81915204,-0.57357644 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},-0.81915204,-0.57357644 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.08715574,-0.99619470 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.08715574,-0.99619470 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.90630779,-0.42261826 +11,RC_nd2,3,Trigonal_Low -3,{-1-120},0.90630779,-0.42261826 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},-0.81915204,-0.57357644 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},-0.81915204,-0.57357644 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.08715574,-0.99619470 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.08715574,-0.99619470 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.90630779,-0.42261826 +11,RC_nd2,3,Trigonal_Low -3,{2-1-10},0.90630779,-0.42261826 +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/Docs/Index.md b/Docs/Index.md index e669fea4..e58490e7 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 @@ -9,11 +9,17 @@ URL is [http://pajarito.materials.cmu.edu/lectures/L3-OD_symmetry-21Jan16-slide_ ## Hexagonal Cartesian Conventions: X‖a vs X‖a* -EbsdLib v3 aligned its hexagonal and trigonal direction conventions to `X‖a*`, matching +EbsdLib v3.0 aligned its hexagonal and trigonal direction conventions to `X‖a*`, matching MTEX and Oxford Instruments / HKL acquisition systems. (EDAX/TSL/OIM Analysis use the other convention, `X‖a`.) The 30° rotation between the two conventions is what caused the original `(10-10)` and `(2-1-10)` pole-figure mismatches before the v3 changes. +**As of 3.1.0 the public default is `X‖a` (TSL/EDAX)**, matching legacy DREAM3D and the +rest of EbsdLib. The internal canonical SymOps tables remain `X‖a*` (MTEX-validated); only +the *default* selected by the IPF/pole-figure APIs and config structs changed. IPF colors +are convention-invariant — only pole-figure positions and the legend / pole-figure family +labels follow the basis. + ![X parallel a-star convention](x_parallel_a_star_convention.svg) Position-space validation across all 11 Laue classes lives in @@ -21,6 +27,108 @@ Position-space validation across all 11 Laue classes lives in --- +# Release Notes — EbsdLib 3.1.0 + +EbsdLib 3.1 is the "discrete pole figures + TSL-by-default" release. It builds +on the 3.0 MTEX-correctness work with a new vector-marker pole-figure renderer +and a switch of the public default hexagonal/trigonal basis back to `X‖a` +(TSL/EDAX). The two themes: + +1. **Discrete (vector-marker) pole figures.** A new renderer draws each pole as + a crisp, decimated vector marker instead of rasterizing it as pixels — + sharper figures, controllable marker size, and a hard cap on overdraw for + million-pole datasets. +2. **`X‖a` (TSL) is the default convention again.** 3.0 shipped `X‖a*` (MTEX) as + the public default; 3.1 returns the default to `X‖a` to match legacy DREAM3D + and the rest of EbsdLib. The internal canonical tables are unchanged + (`X‖a*`); only the default the public APIs/structs select changed. + +Detailed API reference: [`v3_api_reference.md`](v3_api_reference.md). + +## Breaking changes + +### Default hexagonal/trigonal convention is now `X‖a` (TSL) + +The default value of `HexConvention` flipped from `XParallelAStar` (3.0) to +`XParallelA` (3.1) in every public surface that selects it: + +- `LaueOps::generateIPFTriangleLegend(...)` — the `conv` parameter, which was + **required** in 3.0, now defaults to `ebsdlib::HexConvention::XParallelA`. +- `PoleFigureConfiguration_t::hexConvention` — now defaults to `XParallelA`. +- `CompositePoleFigureConfiguration_t::hexConvention` — now defaults to `XParallelA`. +- `InversePoleFigureConfiguration_t::hexConvention` — now defaults to `XParallelA` + (affects only the SST label annotation; IPF colors are convention-invariant). + +Effect: hexagonal/trigonal **pole-figure positions** and **legend/family labels** +render in the TSL basis by default. IPF *colors* are unaffected (convention- +invariant). Callers that want the 3.0 behavior must now pass +`HexConvention::XParallelAStar` explicitly (e.g. to compare side-by-side with +MTEX). Cubic / tetragonal / orthorhombic / monoclinic / triclinic are unaffected. + +### Pole-figure family labels: brace notation, convention-independent + +`getDefaultPoleFigureNames()` now returns **plane-family brace notation** — +`{0001}`, `{10-10}`, `{11-20}`, `{001}`, `{011}`, `{111}`, etc. — for every +Laue class, and the labels are **identical under both conventions**. The 3.0 +behavior of switching the hexagonal a-family label (`<10-10>` ↔ `<2-1-10>`) with +the convention is removed; both conventions now report `{11-20}` for that family +(the family identity is convention-independent; only the on-figure dot positions +rotate by 30°). Downstream code that parsed the old angle-bracket strings, or +that relied on the per-convention label switch, must update. + +### Rendered-figure differences + +Pole figures now render **+Y-up** by default (`flipFinalImage`), and discrete +figures use the vector-marker renderer rather than per-pixel stamping. Output is +not byte-identical to 3.0. Any pixel-level exemplars pinned against 3.0 pole +figures must be regenerated. + +## New features + +### Discrete vector-marker pole figure renderer + +- `DiscretePoleFigureCompositor` renders discrete pole figures by stamping + opaque marker sprites, with a `MarkerOccupancyGrid` that decimates + overlapping markers (bounded overdraw for >1M-pole inputs). +- `ebsdlib::GeneratePoleFigureComposite(config)` is the dispatch entry point: + it routes `discrete && !discreteHeatMap` figures to the vector-marker + renderer and everything else to the raster `PoleFigureCompositor`. Prefer + this over calling a compositor directly. +- `CompositePoleFigureConfiguration_t` gained a `DiscreteMarkerStyle` + (`markerStyle.radiusFraction`) to control marker size. +- `StereographicProjectUpperHemisphere(...)` projection helper. +- Shared title / axis / info-block chrome extracted into a reusable + `PoleFigureChrome` module. + +### IPF legends annotate their convention + +Hexagonal and trigonal IPF triangle legends now print a small +`Convention: X||a (TSL)` (or `X||a* (MTEX/Oxford)`) sub-line under the title, +so a legend is self-documenting. Non-hex/trig classes are unchanged. + +## Apps that changed + +| App | Status | +| --- | ------ | +| `generate_ipf_legends` | defaults to `X‖a`; prints the absolute output directory at start/finish; regenerates the per-class legend + pole-figure matrix as PNG | +| `render_ebsd` | `--convention` now defaults to `x_a` (TSL) | + +## Validation evidence + +- **Strict IPF-color corners.** `LaueOpsTest::IPFColor_SSTCorners` asserts the + standard-stereographic-triangle corners render as pure primaries for **every** + Laue class: apex (`[0001]`/`[001]`) = red, η-min edge = green, η-max edge = + blue (exact primaries for cubic and hex 6/mmm; dominant-channel just inside the + edge for the wider-wedge classes, which sit on a fold boundary). +- **Discrete-render performance guard.** A hidden test renders a >1M-pole + discrete figure to bound decimation cost. +- **MTEX positions still validated.** `PoleFigurePositionTest` continues to pass + against the MTEX golden (`X‖a*`). `PoleFigureLaueComparisonTest` now routes + through `GeneratePoleFigureComposite` (vector markers) and pins `X‖a*` locally + to stay aligned with its MTEX comparison script. + +--- + # Release Notes — EbsdLib 3.0.0 EbsdLib 3.0 is the "MTEX-compatible pole figures and IPF coloring" release. diff --git a/Docs/v3_api_reference.md b/Docs/v3_api_reference.md index 6f8c417d..0f109c85 100644 --- a/Docs/v3_api_reference.md +++ b/Docs/v3_api_reference.md @@ -1,10 +1,17 @@ # EbsdLib v3 API Reference (LaueOps + supporting types) -This is a hand-written reference for the public LaueOps surface as of -v3.0.0, focused on the symbols that changed in v3. The full Doxygen -header documentation is the source of truth for the per-parameter -contracts; this file gives the high-level picture and the cross-references -between symbols. +This is a hand-written reference for the public LaueOps surface and the +pole-figure rendering API as of v3.1.0, focused on the symbols that changed +across the v3 line. The full Doxygen header documentation is the source of +truth for the per-parameter contracts; this file gives the high-level +picture and the cross-references between symbols. + +**v3.1.0 deltas** (called out inline below): the public default hex/trig +convention flipped from `XParallelAStar` back to `XParallelA` (TSL); +`getDefaultPoleFigureNames` now returns convention-independent brace-notation +labels; `generateIPFTriangleLegend`'s base-virtual `conv` parameter gained a +default; and a discrete vector-marker pole-figure renderer +(`GeneratePoleFigureComposite` + `DiscretePoleFigureCompositor`) was added. For the release-notes view (what changed, why, and migration recipes), see [`Index.md`](Index.md). @@ -130,7 +137,7 @@ virtual UInt8ArrayType::Pointer generateIPFTriangleLegend( - `imageDim` — square canvas size in pixels. - `generateEntirePlane=true` renders the full unit circle; `false` renders just the SST (the standard view). -- `conv` — no default on the base virtual. Hex/trig overrides honor it (legend labels and basal-plane direction tables shuffle); non-hex/trig overrides ignore it. +- `conv` — **v3.1.0:** the base virtual now defaults this to `XParallelA` (it had no default in v3.0). Hex/trig overrides default to `XParallelA`; non-hex/trig overrides default to `NotApplicable` and ignore the parameter. Hex/trig overrides honor it (basal-plane direction tables shuffle, and the legend draws a convention sub-line under the title). - `kind` — picks the per-class color key. Defaults to TSL. - `gridded=true` wraps the selected key in a `GriddedColorKey` (~1° eta × chi resolution) to produce MTEX-style flat-shaded cells. Only meaningful for legends. @@ -149,7 +156,7 @@ virtual void generateSphereCoordsFromEulers( - `c1`, `c2`, `c3` receive one normalized direction per orientation per symmetry-equivalent pole, for plane families 0, 1, 2 respectively. - For cubic/tet/ortho/mono/triclinic, the three families are convention-invariant and `conv` is ignored. -- For hex 6/mmm and 6/m, `conv` selects whether plane families 1 and 2 are the `X‖a*` basis (`<10-10>` and `<11-20>`) or the `X‖a` basis (the same families rotated 30°). +- For hex 6/mmm and 6/m, `conv` selects whether plane families 1 and 2 are the `X‖a*` basis (`{10-10}` and `{11-20}` sitting at azimuths 0/60/… and 30/90/…) or the `X‖a` basis (the same families rotated 30° about c). Both bases are position-validated against MTEX in `PoleFigurePositionTest` (one golden CSV per convention). ### Default pole-figure family labels @@ -159,10 +166,16 @@ virtual std::array getDefaultPoleFigureNames( ``` Returns the labels for the three default plane families EbsdLib renders. -Hex/trig classes return *different* labels per convention; non-hex/trig -classes return the same labels regardless. Always paired with a matching -call to `generateSphereCoordsFromEulers(..., conv)` so the labels and the -data agree. + +**v3.1.0:** labels are now **convention-independent** — the same +brace-notation strings are returned for both conventions (e.g. hex returns +`{0001}`, `{10-10}`, `{11-20}` regardless of `conv`). Previously the hex/trig +classes returned *different* angle-bracket labels per convention; the +brace-notation values were chosen because they are unambiguous in either +basis. Only the rendered *positions* (from `generateSphereCoordsFromEulers`) +differ between conventions, not the labels. The `conv` parameter is retained +for API symmetry but no longer changes the returned strings. Still paired +with `generateSphereCoordsFromEulers(..., conv)` so labels and data agree. ### Misorientation coloring (unchanged signature) @@ -185,15 +198,115 @@ SymOps refactor. `LaueOps::generatePoleFigure()` and by the standalone family-emission renderer. - `ebsdlib::CompositePoleFigureConfiguration_t::hexConvention` — picked - up by `PoleFigureCompositor::generateCompositeImage()`. The simplnx - `WritePoleFigureFilter` learned to set this in v3.0; pre-v3 it was - silently default-constructed (PR 2g, commit `9395592`). -- `ebsdlib::InversePoleFigureConfiguration_t::hexConvention` — added in - PR 2k. - -All three default to `XParallelAStar`. Callers that don't care should -leave the default; the simplnx side exposes the choice as the -`hex_convention_index` UI parameter. + up by `PoleFigureCompositor::generateCompositeImage()` and by the + discrete path. The simplnx `WritePoleFigureFilter` sets this for both the + intensity and composite configs. +- `ebsdlib::InversePoleFigureConfiguration_t::hexConvention` — affects only + the SST label annotation (IPF colors are convention-invariant). + +**v3.1.0 default flip:** all three now default to **`XParallelA`** (TSL), +down from `XParallelAStar` in v3.0. This is a behavioral change for any +caller that default-constructed the config and rendered a hex/trig phase. +The simplnx side exposes the choice as the `hex_convention_index` UI +parameter and sets it explicitly, so it is unaffected. + +> **Migration:** to keep v3.0 (MTEX / `X‖a*`) pole figures, set +> `config.hexConvention = ebsdlib::HexConvention::XParallelAStar` explicitly. +> Colors and IPF maps are convention-invariant and need no change. + +--- + +## Discrete vector-marker pole figures (new in v3.1.0) + +```cpp +#include "EbsdLib/Utilities/PoleFigureCompositor.h" +#include "EbsdLib/Utilities/DiscretePoleFigureCompositor.h" +#include "EbsdLib/Utilities/PoleFigureProjection.h" +``` + +v3.0 rendered discrete pole figures by painting individual pixels, which +aliased badly at the per-pole level. v3.1 adds a vector-marker renderer that +draws each pole as a fully-opaque filled circle (anti-aliased sprite), plus a +single dispatch entry point that routes a config to the right renderer. + +### Dispatch entry point + +```cpp +EbsdLib_EXPORT CompositePoleFigureResult +GeneratePoleFigureComposite(CompositePoleFigureConfiguration_t& config); +``` + +The function callers should prefer. It inspects `config.discrete` / +`config.discreteHeatMap` and dispatches: + +| `discrete` | `discreteHeatMap` | Renderer | +| ---------- | ----------------- | -------- | +| `false` | — | `PoleFigureCompositor` (Lambert-interpolated intensity heatmap) | +| `true` | `false` | `DiscretePoleFigureCompositor` (vector markers) | +| `true` | `true` | discrete heatmap (per-pole binned color) | + +Returns a `CompositePoleFigureResult { UInt8ArrayType::Pointer image; int32_t height; int32_t width; }` +holding an RGBA image. `WritePoleFigure` (simplnx) and the `make_pole_figure` +app both route through this. + +### `DiscretePoleFigureCompositor` + +```cpp +class EbsdLib_EXPORT DiscretePoleFigureCompositor +{ +public: + CompositePoleFigureResult generateCompositeImage(CompositePoleFigureConfiguration_t& config); +}; +``` + +Non-copyable, non-movable, stateless per call. Reads +`config.hexConvention` (via `generateSphereCoordsFromEulers`) and +`config.markerStyle`, and uses a `MarkerOccupancyGrid` to decimate +overlapping markers so dense clusters stay legible. + +### `DiscreteMarkerStyle` + +```cpp +struct EbsdLib_EXPORT DiscreteMarkerStyle +{ + std::array color = {0.0f, 0.0f, 0.0f}; ///< marker RGB, default black (opaque) + float radiusFraction = 0.006f; ///< radius as a fraction of figure diameter (imageDim) +}; +``` + +A field on `CompositePoleFigureConfiguration_t` (`markerStyle`). simplnx +exposes `radiusFraction` as a user parameter. + +### `StereographicProjectUpperHemisphere` + +```cpp +EbsdLib_EXPORT std::array +StereographicProjectUpperHemisphere(float x, float y, float z); +``` + +Upper-hemisphere stereographic projection helper (antipodal fold for `z<0`, +then `x/(1+z)`, `y/(1+z)`) — the same rule the MTEX validation goldens use. +Factored out so the discrete and raster paths project identically. + +### `PoleFigureChrome` + +```cpp +#include "EbsdLib/Utilities/PoleFigureChrome.h" +``` + +Free functions that draw the shared chrome (background, title, info block, +circular frame + axis labels) for both the raster and discrete paths, so the +two renderers are visually consistent: + +```cpp +void DrawPoleFigureBackground(canvas_ity::canvas&, const LayoutMetrics&); +void DrawPoleFigureTitle(canvas_ity::canvas&, const std::string& title, ...); +void DrawPoleFigureInfoBlock(canvas_ity::canvas&, const CompositePoleFigureConfiguration_t&, ...); +void DrawPoleFigureFrame(canvas_ity::canvas&, const CompositePoleFigureConfiguration_t&, ...); +``` + +The subtitle/info block converts brace-notation family labels (`{10-10}`) to +parenthesized form for display. --- 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..add68b01 100644 --- a/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h +++ b/Source/EbsdLib/Utilities/InversePoleFigureUtilities.h @@ -64,14 +64,16 @@ 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- /// index labels drawn around the SST in generateAnnotatedIPFDensity. /// Ignored for cubic / tetragonal / orthorhombic / monoclinic / triclinic. + /// Defaults to X||a (TSL) to match the pole-figure config structs (3.1). + /// IPF colors are convention-invariant; this only affects the SST labels. /// See ebsdlib::HexConvention. - ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelAStar; + ebsdlib::HexConvention hexConvention = ebsdlib::HexConvention::XParallelA; }; /** 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..7c0e0647 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 0930baa54ceb7c1d468e6f9b1ee0ffffbdf63b881b7199484136377cc30e7049e94f4cb37b9f199fd53da32c4aac1dd448d5e0b7ef86314696561f07e4ba6ea9) 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/PoleFigurePositionTest.cpp b/Source/Test/PoleFigurePositionTest.cpp index b9763792..d3f14e2e 100644 --- a/Source/Test/PoleFigurePositionTest.cpp +++ b/Source/Test/PoleFigurePositionTest.cpp @@ -215,24 +215,28 @@ BucketMatchResult greedyMatch(const std::vector>& a, c } } // namespace -TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePositionTest]") +// ----------------------------------------------------------------------------- +// Emit EbsdLib pole-figure positions for one hexagonal/trigonal Cartesian +// convention and validate every bucket (orientation x Laue class x plane +// family) against the matching MTEX golden CSV. +// +// The convention only changes the hex/trig families (a 30 deg basis rotation +// about c); for all other Laue classes the convention is ignored, so those +// buckets are identical between conventions. Each convention therefore needs +// its own MTEX golden, generated by Data/Pole_Figure_Validation/ +// mtex_pole_figure_positions.m with the matching crystalSymmetry alignment. +// ----------------------------------------------------------------------------- +static void validatePositionsAgainstMtex(const std::vector& ops, const std::vector& uniqueOpsIndices, ebsdlib::HexConvention conv, const std::string& goldenPath, + const std::string& ebCsvPath) { - const std::string baseDir = fmt::format("{}PoleFigurePositions", ebsdlib::unit_test::k_TestTempDir); - const std::string csvPath = fmt::format("{}/ebsdlib_pole_figure_positions.csv", baseDir); - REQUIRE(EnsureParentDirectoryExists(csvPath)); + REQUIRE(EnsureParentDirectoryExists(ebCsvPath)); - std::ofstream csv(csvPath); + std::ofstream csv(ebCsvPath); REQUIRE(csv.is_open()); csv << "orient_id,orient_name,rotation_point_group,symmetry_name,plane_family,x,y\n"; csv << std::fixed; csv.precision(8); - std::vector ops = LaueOps::GetAllOrientationOps(); - std::vector uniqueOpsIndices = uniqueLaueOpsIndices(ops); - - // Captured during emission so we can hand-verify Cube/m-3m/{001} below. - std::vector> cubeM3mFamily0; - // Per-bucket (canonicalized) point list, populated during the emission // loop and compared against the MTEX golden after. BucketMap ebMap; @@ -250,14 +254,14 @@ TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePosit const std::string rpg = op->getRotationPointGroup(); const std::string symName = op->getSymmetryName(); const std::array symSizes = op->getNumSymmetry(); - const std::array familyNames = op->getDefaultPoleFigureNames(ebsdlib::HexConvention::XParallelAStar); + const std::array familyNames = op->getDefaultPoleFigureNames(conv); // The three output buffers grow to 1 * symSize_i tuples each. std::vector dims = {3ULL}; ebsdlib::FloatArrayType::Pointer xyz0 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[0]), dims, "xyz0", true); ebsdlib::FloatArrayType::Pointer xyz1 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[1]), dims, "xyz1", true); ebsdlib::FloatArrayType::Pointer xyz2 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[2]), dims, "xyz2", true); - op->generateSphereCoordsFromEulers(eulersArr.get(), xyz0.get(), xyz1.get(), xyz2.get(), ebsdlib::HexConvention::XParallelAStar); + op->generateSphereCoordsFromEulers(eulersArr.get(), xyz0.get(), xyz1.get(), xyz2.get(), conv); ebsdlib::FloatArrayType* buffers[3] = {xyz0.get(), xyz1.get(), xyz2.get()}; for(int family = 0; family < 3; ++family) @@ -273,50 +277,12 @@ TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePosit // Populate the canonicalized per-bucket map for the MTEX comparison. auto canonPt = canonicalizeEquator(px, py); ebMap[{static_cast(orientId), rpg, familyNames[family]}].emplace_back(canonPt.first, canonPt.second); - - if(canon.name == "Cube" && rpg == "432" && family == 0) - { - cubeM3mFamily0.emplace_back(px, py); - } } } } } csv.close(); - std::cout << "Wrote " << csvPath << std::endl; - - // Hand-verifiable sanity check: Cube (Bunge 0,0,0) under m-3m {001} produces - // the six crystal directions [±100], [0±10], [0,0,±1]. After stereographic - // projection with antipodal folding, those land at: - // (1, 0), (-1, 0), (0, 1), (0, -1), (0, 0), (0, 0) - // (the [001] / [00-1] pair both fold to the disk center). - REQUIRE(cubeM3mFamily0.size() == 6); - - const std::vector> expected = {{1.0, 0.0}, {-1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}, {0.0, 0.0}, {0.0, 0.0}}; - - // Match by greedy nearest-neighbor — the order in which generateSphereCoords - // emits poles is a private implementation detail we shouldn't pin to. - std::vector matched(expected.size(), false); - for(const auto& got : cubeM3mFamily0) - { - bool foundMatch = false; - for(size_t e = 0; e < expected.size(); ++e) - { - if(matched[e]) - { - continue; - } - if(nearlyEqual(got.first, expected[e].first) && nearlyEqual(got.second, expected[e].second)) - { - matched[e] = true; - foundMatch = true; - break; - } - } - INFO("Cube/m-3m/{001} pole (" << got.first << ", " << got.second << ") had no match in expected set"); - REQUIRE(foundMatch); - } - REQUIRE(std::all_of(matched.begin(), matched.end(), [](bool b) { return b; })); + std::cout << "Wrote " << ebCsvPath << std::endl; // --------------------------------------------------------------------------- // Compare every bucket against the MTEX golden CSV. Tolerance of 1e-5 is @@ -324,7 +290,6 @@ TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePosit // sphere coords as float; MTEX writes to 8 decimals) and well below any // crystallographic discrepancy worth investigating. // --------------------------------------------------------------------------- - const std::string goldenPath = ebsdlib::unit_test::DataDir + "Pole_Figure_Validation/mtex_pole_figure_positions.csv"; std::cout << "Loading MTEX golden: " << goldenPath << std::endl; BucketMap mtexMap = parseGoldenCsv(goldenPath); REQUIRE(!mtexMap.empty()); @@ -366,3 +331,98 @@ TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePosit } std::cout << "Compared " << bucketsCompared << " buckets against MTEX golden; worst max-distance = " << globalMax << " (tolerance = " << k_BucketTol << ")" << std::endl; } + +TEST_CASE("ebsdlib::PoleFigurePositionTest::EmitCsv", "[EbsdLib][PoleFigurePositionTest]") +{ + const std::string baseDir = fmt::format("{}PoleFigurePositions", ebsdlib::unit_test::k_TestTempDir); + + std::vector ops = LaueOps::GetAllOrientationOps(); + std::vector uniqueOpsIndices = uniqueLaueOpsIndices(ops); + + // --------------------------------------------------------------------------- + // Hand-verifiable, convention-independent sanity check: Cube (Bunge 0,0,0) + // under m-3m {001} produces the six crystal directions [±100], [0±10], + // [0,0,±1]. After stereographic projection with antipodal folding, those land + // at (1,0), (-1,0), (0,1), (0,-1), (0,0), (0,0) (the [001]/[00-1] pair both + // fold to the disk center). Cubic ignores the hex convention. + // --------------------------------------------------------------------------- + { + LaueOps::Pointer cubic; + for(size_t i : uniqueOpsIndices) + { + if(ops[i]->getRotationPointGroup() == "432") + { + cubic = ops[i]; + break; + } + } + REQUIRE(cubic != nullptr); + + std::vector eulerVec = {0.0F, 0.0F, 0.0F}; + ebsdlib::FloatArrayType::Pointer eulersArr = ebsdlib::FloatArrayType::FromStdVector(eulerVec, 1ULL, 3ULL, "Eulers"); + const std::array symSizes = cubic->getNumSymmetry(); + std::vector dims = {3ULL}; + ebsdlib::FloatArrayType::Pointer xyz0 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[0]), dims, "xyz0", true); + ebsdlib::FloatArrayType::Pointer xyz1 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[1]), dims, "xyz1", true); + ebsdlib::FloatArrayType::Pointer xyz2 = ebsdlib::FloatArrayType::CreateArray(static_cast(symSizes[2]), dims, "xyz2", true); + cubic->generateSphereCoordsFromEulers(eulersArr.get(), xyz0.get(), xyz1.get(), xyz2.get(), ebsdlib::HexConvention::NotApplicable); + + std::vector> cubeM3mFamily0; + for(int32_t s = 0; s < symSizes[0]; ++s) + { + float* p = xyz0->getPointer(static_cast(s) * 3); + cubeM3mFamily0.emplace_back(projectStereographic(static_cast(p[0]), static_cast(p[1]), static_cast(p[2]))); + } + REQUIRE(cubeM3mFamily0.size() == 6); + + const std::vector> expected = {{1.0, 0.0}, {-1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}, {0.0, 0.0}, {0.0, 0.0}}; + + // Match by greedy nearest-neighbor — the order in which generateSphereCoords + // emits poles is a private implementation detail we shouldn't pin to. + std::vector matched(expected.size(), false); + for(const auto& got : cubeM3mFamily0) + { + bool foundMatch = false; + for(size_t e = 0; e < expected.size(); ++e) + { + if(matched[e]) + { + continue; + } + if(nearlyEqual(got.first, expected[e].first) && nearlyEqual(got.second, expected[e].second)) + { + matched[e] = true; + foundMatch = true; + break; + } + } + INFO("Cube/m-3m/{001} pole (" << got.first << ", " << got.second << ") had no match in expected set"); + REQUIRE(foundMatch); + } + REQUIRE(std::all_of(matched.begin(), matched.end(), [](bool b) { return b; })); + } + + // --------------------------------------------------------------------------- + // X||a* (MTEX/Oxford) — the long-standing golden. Always validated. + // --------------------------------------------------------------------------- + validatePositionsAgainstMtex(ops, uniqueOpsIndices, ebsdlib::HexConvention::XParallelAStar, ebsdlib::unit_test::DataDir + "Pole_Figure_Validation/mtex_pole_figure_positions.csv", + fmt::format("{}/ebsdlib_pole_figure_positions.csv", baseDir)); + + // --------------------------------------------------------------------------- + // X||a (TSL/EDAX) — the 3.1 public default. Validated against a second MTEX + // golden produced by the same script with the X||a alignment. Until that + // golden is generated + committed, skip with a loud warning rather than fail + // so the suite stays green during the release stabilization window. + // --------------------------------------------------------------------------- + const std::string xaGolden = ebsdlib::unit_test::DataDir + "Pole_Figure_Validation/mtex_pole_figure_positions_xa.csv"; + if(std::filesystem::exists(xaGolden)) + { + validatePositionsAgainstMtex(ops, uniqueOpsIndices, ebsdlib::HexConvention::XParallelA, xaGolden, fmt::format("{}/ebsdlib_pole_figure_positions_xa.csv", baseDir)); + } + else + { + WARN("X||a MTEX golden not found (" << xaGolden + << "); skipping X||a position validation. Generate it by running " + "Data/Pole_Figure_Validation/mtex_pole_figure_positions.m with the X||a alignment."); + } +} 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); } // ----------------------------------------------------------------------------- diff --git a/Support/mtex_scripts/compare_pole_figures_all_laue.m b/Support/mtex_scripts/compare_pole_figures_all_laue.m index 7c88f325..868c627a 100644 --- a/Support/mtex_scripts/compare_pole_figures_all_laue.m +++ b/Support/mtex_scripts/compare_pole_figures_all_laue.m @@ -25,8 +25,12 @@ setMTEXpref('zAxisDirection', 'outOfPlane'); % Map EbsdLib rotation point group → MTEX crystalSymmetry Laue class string -% plus the 3 Miller-Bravais / Miller indices to plot. EbsdLib now uses -% X||a* for hexagonal/trigonal crystals (MTEX default). +% plus the 3 Miller-Bravais / Miller indices to plot. The hex/trig classes +% pin the alignment EXPLICITLY to 'X||a*' so this side-by-side stays +% apples-to-apples with PoleFigureLaueComparisonTest, which renders X||a*. +% (Do not rely on the MTEX default alignment — it is not guaranteed X||a*.) +% Note: EbsdLib's public default convention is X||a (TSL) as of 3.1; this +% diagnostic deliberately compares the X||a* path that the C++ test pins. laueMap = containers.Map(); % cubic laueMap('432') = struct('cs', crystalSymmetry('m-3m'), ... @@ -34,9 +38,9 @@ laueMap('23') = struct('cs', crystalSymmetry('m-3'), ... 'h', {{[0 0 1], [0 1 1], [1 1 1]}}); % hexagonal -laueMap('622') = struct('cs', crystalSymmetry('6/mmm', [1 1 1.6]), ... +laueMap('622') = struct('cs', crystalSymmetry('6/mmm', [1 1 1.6], 'X||a*'), ... 'h', {{[0 0 0 1], [1 0 -1 0], [2 -1 -1 0]}}); -laueMap('6') = struct('cs', crystalSymmetry('6/m', [1 1 1.6]), ... +laueMap('6') = struct('cs', crystalSymmetry('6/m', [1 1 1.6], 'X||a*'), ... 'h', {{[0 0 0 1], [1 0 -1 0], [1 1 -2 0]}}); % tetragonal laueMap('422') = struct('cs', crystalSymmetry('4/mmm'), ... @@ -44,9 +48,9 @@ laueMap('4') = struct('cs', crystalSymmetry('4/m'), ... 'h', {{[0 0 1], [1 0 0], [1 1 0]}}); % trigonal -laueMap('32') = struct('cs', crystalSymmetry('-3m', [1 1 1.6]), ... +laueMap('32') = struct('cs', crystalSymmetry('-3m', [1 1 1.6], 'X||a*'), ... 'h', {{[0 0 0 1], [0 -1 1 0], [1 -1 0 0]}}); -laueMap('3') = struct('cs', crystalSymmetry('-3', [1 1 1.6]), ... +laueMap('3') = struct('cs', crystalSymmetry('-3', [1 1 1.6], 'X||a*'), ... 'h', {{[0 0 0 1], [-1 -1 2 0], [2 -1 -1 0]}}); % orthorhombic laueMap('222') = struct('cs', crystalSymmetry('mmm'), ...