From f8177a605da4869e1233106c185cdb5c74d7fcf9 Mon Sep 17 00:00:00 2001 From: nyoungbq Date: Tue, 18 Feb 2025 10:37:48 -0500 Subject: [PATCH] clean up and renaming --- .../Algorithms/ComputeTwinBoundaries.cpp | 69 +++++++++---------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/src/Plugins/OrientationAnalysis/src/OrientationAnalysis/Filters/Algorithms/ComputeTwinBoundaries.cpp b/src/Plugins/OrientationAnalysis/src/OrientationAnalysis/Filters/Algorithms/ComputeTwinBoundaries.cpp index 887b218ec3..1e018d272a 100644 --- a/src/Plugins/OrientationAnalysis/src/OrientationAnalysis/Filters/Algorithms/ComputeTwinBoundaries.cpp +++ b/src/Plugins/OrientationAnalysis/src/OrientationAnalysis/Filters/Algorithms/ComputeTwinBoundaries.cpp @@ -17,7 +17,7 @@ using namespace nx::core; namespace { template -bool IsTwinBoundary(const Eigen::Quaternion& quat1, const Eigen::Quaternion& quat2, const std::vector& orientationOps, uint32 targetPhaseIndex, float32 angTolerance, +bool IsTwinBoundary(const Eigen::Quaternion& quat1, const Eigen::Quaternion& quat2, const std::vector& orientationOps, uint32 crystalStructure, float32 angTolerance, float32 axisTolerance) { T real = std::numeric_limits::max(); @@ -32,13 +32,13 @@ bool IsTwinBoundary(const Eigen::Quaternion& quat1, const Eigen::Quaternion s1_misq; Eigen::Quaternion s2_misq; - const int32 nsym = orientationOps[targetPhaseIndex]->getNumSymOps(); + const int32 nsym = orientationOps[crystalStructure]->getNumSymOps(); const Eigen::Quaternion q2 = quat2.conjugate(); misq = quat1 * q2; for(int32 j = 0; j < nsym; j++) { - Quaternion jQuat = orientationOps[targetPhaseIndex]->getQuatSymOp(j); + Quaternion jQuat = orientationOps[crystalStructure]->getQuatSymOp(j); sym_q = Eigen::Quaterniond(jQuat.w(), jQuat.x(), jQuat.y(), jQuat.z()); // calculate crystal direction parallel to normal @@ -47,7 +47,7 @@ bool IsTwinBoundary(const Eigen::Quaternion& quat1, const Eigen::Quaternion kQuat = orientationOps[targetPhaseIndex]->getQuatSymOp(k); + Quaternion kQuat = orientationOps[crystalStructure]->getQuatSymOp(k); sym_q = Eigen::Quaterniond(kQuat.w(), kQuat.x(), kQuat.y(), kQuat.z()); sym_q = sym_q.conjugate(); s2_misq = sym_q * s1_misq; @@ -69,7 +69,7 @@ bool IsTwinBoundary(const Eigen::Quaternion& quat1, const Eigen::Quaternion std::optional FindTwinBoundaryIncoherence(const Eigen::Vector3d& xstl_norm, const Eigen::Quaternion& quat1, const Eigen::Quaternion& quat2, - const std::vector& orientationOps, uint32 targetPhaseIndex, float32 angTolerance, float32 axisTolerance) + const std::vector& orientationOps, uint32 crystalStructure, float32 angTolerance, float32 axisTolerance) { T real = std::numeric_limits::max(); T axisdiff111; @@ -85,14 +85,14 @@ std::optional FindTwinBoundaryIncoherence(const Eigen::Vector3d& xstl_norm, c Eigen::Quaternion s1_misq; Eigen::Quaternion s2_misq; - const int32 nsym = orientationOps[targetPhaseIndex]->getNumSymOps(); + const int32 nsym = orientationOps[crystalStructure]->getNumSymOps(); const Eigen::Quaternion q2 = quat2.conjugate(); misq = quat1 * q2; bool valid = false; for(int32 j = 0; j < nsym; j++) { - Quaternion jQuat = orientationOps[targetPhaseIndex]->getQuatSymOp(j); + Quaternion jQuat = orientationOps[crystalStructure]->getQuatSymOp(j); j_sym_q = Eigen::Quaterniond(jQuat.w(), jQuat.x(), jQuat.y(), jQuat.z()); // calculate crystal direction parallel to normal @@ -101,7 +101,7 @@ std::optional FindTwinBoundaryIncoherence(const Eigen::Vector3d& xstl_norm, c for(int32 k = j + 1; k < nsym; k++) { // calculate the symmetric misorienation - Quaternion kQuat = orientationOps[targetPhaseIndex]->getQuatSymOp(k); + Quaternion kQuat = orientationOps[crystalStructure]->getQuatSymOp(k); sym_q = Eigen::Quaterniond(kQuat.w(), kQuat.x(), kQuat.y(), kQuat.z()); sym_q = sym_q.conjugate(); s2_misq = sym_q * s1_misq; @@ -183,26 +183,24 @@ class CalculateTwinBoundaryWithIncoherenceImpl const int32 feature1 = m_FaceLabels[2 * i]; const int32 feature2 = m_FaceLabels[(2 * i) + 1]; - if(feature1 > 0 && feature2 > 0 && m_FeaturePhases[feature1] == m_FeaturePhases[feature2]) + const int32 phase = m_FeaturePhases[feature1]; // Feature1 was arbitrarily selected the feature phase index is identical + if(feature1 > 0 && feature2 > 0 && phase == m_FeaturePhases[feature2]) { - const uint32 phase1 = m_CrystalStructures[m_FeaturePhases[feature1]]; - const uint32 phase2 = m_CrystalStructures[m_FeaturePhases[feature2]]; - if(phase1 == phase2) - { - // Avg Quats is stored Vector Scalar but the Quaternion Constructor is Scalar-Vector - const Eigen::Quaterniond q1(m_AvgQuats[(feature1 * 4) + 3], m_AvgQuats[feature1 * 4], m_AvgQuats[(feature1 * 4) + 1], m_AvgQuats[(feature1 * 4) + 2]); // W X Y Z - Eigen::Quaterniond q2(m_AvgQuats[(feature2 * 4) + 3], m_AvgQuats[feature2 * 4], m_AvgQuats[(feature2 * 4) + 1], m_AvgQuats[(feature2 * 4) + 2]); // W X Y Z + const uint32 crystalStructure = m_CrystalStructures[phase]; + + // Avg Quats is stored Vector Scalar but the Quaternion Constructor is Scalar-Vector + const Eigen::Quaterniond q1(m_AvgQuats[(feature1 * 4) + 3], m_AvgQuats[feature1 * 4], m_AvgQuats[(feature1 * 4) + 1], m_AvgQuats[(feature1 * 4) + 2]); // W X Y Z + const Eigen::Quaterniond q2(m_AvgQuats[(feature2 * 4) + 3], m_AvgQuats[feature2 * 4], m_AvgQuats[(feature2 * 4) + 1], m_AvgQuats[(feature2 * 4) + 2]); // W X Y Z - Matrix3x3 orientationMatrix = Matrix3x3{OrientationTransformation::qu2om>(q1.coeffs(), QuatD::Order::VectorScalar).data()}; - Eigen::Vector3d xstl_norm = Eigen::Vector3d{m_FaceNormals[3 * i], m_FaceNormals[(3 * i) + 1], m_FaceNormals[(3 * i) + 2]}.transpose() * orientationMatrix; + const Matrix3x3 orientationMatrix = Matrix3x3{OrientationTransformation::qu2om>(q1.coeffs(), QuatD::Order::VectorScalar).data()}; + const Eigen::Vector3d xstl_norm = Eigen::Vector3d{m_FaceNormals[3 * i], m_FaceNormals[(3 * i) + 1], m_FaceNormals[(3 * i) + 2]}.transpose() * orientationMatrix; - std::optional minIncoherence = FindTwinBoundaryIncoherence(xstl_norm, q1, q2, m_OrientationOps, phase1, m_AngTol, m_AxisTol); + std::optional minIncoherence = FindTwinBoundaryIncoherence(xstl_norm, q1, q2, m_OrientationOps, crystalStructure, m_AngTol, m_AxisTol); - if(minIncoherence.has_value()) - { - m_TwinBoundaries->setValue(i, true); - m_TwinBoundaryIncoherence[i] = static_cast(minIncoherence.value()); - } + if(minIncoherence.has_value()) + { + m_TwinBoundaries->setValue(i, true); + m_TwinBoundaryIncoherence[i] = static_cast(minIncoherence.value()); } } } @@ -257,20 +255,17 @@ class CalculateTwinBoundaryImpl return; } - int32 feature1 = m_FaceLabels[2 * i]; - int32 feature2 = m_FaceLabels[(2 * i) + 1]; - - if(feature1 > 0 && feature2 > 0 && m_FeaturePhases[feature1] == m_FeaturePhases[feature2]) + const int32 feature1 = m_FaceLabels[2 * i]; + const int32 feature2 = m_FaceLabels[(2 * i) + 1]; + const int32 phase = m_FeaturePhases[feature1]; // Feature1 was arbitrarily selected the feature phase index is identical + if(feature1 > 0 && feature2 > 0 && phase == m_FeaturePhases[feature2]) { - uint32 phase1 = m_CrystalStructures[m_FeaturePhases[feature1]]; - uint32 phase2 = m_CrystalStructures[m_FeaturePhases[feature2]]; - if(phase1 == phase2) - { - // Avg Quats is stored Vector Scalar but the Quaternion Constructor is Scalar-Vector - const Eigen::Quaterniond q1(m_AvgQuats[(feature1 * 4) + 3], m_AvgQuats[feature1 * 4], m_AvgQuats[(feature1 * 4) + 1], m_AvgQuats[(feature1 * 4) + 2]); // W X Y Z - const Eigen::Quaterniond q2(m_AvgQuats[(feature2 * 4) + 3], m_AvgQuats[feature2 * 4], m_AvgQuats[(feature2 * 4) + 1], m_AvgQuats[(feature2 * 4) + 2]); // W X Y Z - m_TwinBoundaries->setValue(i, IsTwinBoundary(q1, q2, m_OrientationOps, phase1, m_AngTol, m_AxisTol)); - } + const uint32 crystalStructure = m_CrystalStructures[phase]; + + // Avg Quats is stored Vector Scalar but the Quaternion Constructor is Scalar-Vector + const Eigen::Quaterniond q1(m_AvgQuats[(feature1 * 4) + 3], m_AvgQuats[feature1 * 4], m_AvgQuats[(feature1 * 4) + 1], m_AvgQuats[(feature1 * 4) + 2]); // W X Y Z + const Eigen::Quaterniond q2(m_AvgQuats[(feature2 * 4) + 3], m_AvgQuats[feature2 * 4], m_AvgQuats[(feature2 * 4) + 1], m_AvgQuats[(feature2 * 4) + 2]); // W X Y Z + m_TwinBoundaries->setValue(i, IsTwinBoundary(q1, q2, m_OrientationOps, crystalStructure, m_AngTol, m_AxisTol)); } } }