}
}
// заполняем матрицы данных для структурных доменов для всех текущих "окон"
- for (auto &i : graph) {
+ /*for (auto &i : graph) {
#pragma omp parallel for
for (size_t j = 0; j < i.size(); ++j) {
for (size_t k1 {0}; k1 < i[j].size(); ++k1) {
}
}
#pragma omp barrier
+ }*/
+ std::vector< std::vector< std::vector< bool > > > ifGraph;
+ ifGraph.resize(graph.size());
+ for (size_t i {0}; i < ifGraph.size(); ++i) {
+ ifGraph[i].resize(0);
+ ifGraph[i].resize(graph[i].size());
+ for (size_t j {0}; j < ifGraph[i].size(); ++j) {
+ ifGraph[i][j].resize(0);
+ ifGraph[i][j].resize(graph[i][j].size(), true);
+ }
+ }
+
+ #pragma omp parallel for
+ for (size_t i = 0; i < graph.size(); ++i) {
+ for (size_t j {0}; j < frame.size(); ++j) {
+ for (size_t k1 {0}; k1 < frame[j].size(); ++k1) {
+ for (size_t k2 {k1}; k2 < frame[j].size(); ++k2) {
+ if ((frame[j][k1] - frame[j][k2] - refTable[k1][k2]).norm() <= static_cast< float >(eps) && ifGraph[i][k1][k2]) {
+ ifGraph[i][k1][k2] = false;
+ if (k1 != k2) {
+ ++i[j][k1][k2].num;
+ ++i[j][k2][k1].num;
+ } else {
+ ++i[j][k1][k2].num;
+ }
+ }
+ }
+ }
+ }
}
+ #pragma omp barrier
// обновляем число эффективных обновлений
if (graph.size() > 0) {
++updateCount;