74std::vector<std::pair<double, int>>
AngleCombinations(
double distance,
bool folding,
bool addback)
76 std::vector<std::pair<double, int>> result;
77 std::vector<std::pair<double, int>> grouped_result;
78 std::vector<double> angle;
79 for(
int firstDet = 1; firstDet <= 16; ++firstDet) {
80 for(
int firstCry = 0; firstCry < 4; ++firstCry) {
81 for(
int secondDet = 1; secondDet <= 16; ++secondDet) {
82 for(
int secondCry = 0; secondCry < 4; ++secondCry) {
83 if(firstDet == secondDet && firstCry == secondCry) {
108 angle.push_back(18.7868);
115 if(folding && angle.back() > 90.) {
116 angle.back() = 180. - angle.back();
123 std::sort(angle.begin(), angle.end());
125 for(
size_t a = 0; a < angle.size(); ++a) {
126 for(r = 0; r < result.size(); ++r) {
127 if(angle[a] >= result[r].first - 0.001 && angle[a] <= result[r].first + 0.001) {
128 (result[r].second)++;
132 if(result.size() == 0 || r == result.size()) {
133 result.push_back(std::make_pair(angle[a], 1));
138 std::vector<std::pair<double, int>> groupedResult;
139 for(
size_t i = 0; i < result.size(); ++i) {
142 case 1: groupedResult.push_back(result[i]);
break;
146 if(i + 1 >= result.size()) {
147 std::cerr <<
"Error!" << std::endl;
149 groupedResult.push_back(
150 std::make_pair((result[i].first + result[i + 1].first) / 2., result[i].second + result[i + 1].second));
154 groupedResult.push_back(std::make_pair((result[i].first + result[i + 1].first + result[i + 2].first) / 3.,
155 result[i].second + result[i + 1].second + result[i + 2].second));
160 return groupedResult;