bool Utility::checkSameClockDir(const cv::Point3d& triPt1, const cv::Point3d& triPt2, const cv::Point3d& triPt3, const cv::Point3d& norm)
 {
     // edge 1 of triangle
     cv::Point3d edge1 = triPt2 - triPt1;
     // edge 2 of triangle
     cv::Point3d edge2 = triPt3 - triPt1;
     // vector normal of triangle
     cv::Point3d triNormal = edge1 - edge2;
     // dot product with norm
     return norm.dot(triNormal) > 0;
 }
 double Utility::getAngle(const cv::Point3d& a, const cv::Point3d& b)
 {
     return acos(std::min<double>(1, std::max<double>(-1, a.dot(b) / (cv::norm(a) * cv::norm(b)))));
 }