}
}
// заполняем матрицы данных для структурных доменов для всех текущих "окон"
- /*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) {
- for (size_t k2 {k1}; k2 < i[j].size(); ++k2) {
- if ((frame[j][k1] - frame[j][k2] - refTable[k1][k2]).norm() <= static_cast< float >(eps)) {
- if (k1 != k2) {
- ++i[j][k1][k2].num;
- ++i[j][k2][k1].num;
- } else {
- ++i[j][k1][k2].num;
- }
- }
- }
- }
- }
- #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;
+ for (size_t j = 0; j < graph[i].size(); ++j) {
+ for (size_t k1 {0}; k1 < graph[i][j].size(); ++k1) {
+ for (size_t k2 {k1}; k2 < graph[i][j].size(); ++k2) {
+ if ((frame[j][k1] - frame[j][k2] - refTable[k1][k2]).norm() <= static_cast< float >(eps)) {
if (k1 != k2) {
- ++i[j][k1][k2].num;
- ++i[j][k2][k1].num;
+ ++graph[i][j][k1][k2].num;
+ ++graph[i][j][k2][k1].num;
} else {
- ++i[j][k1][k2].num;
+ ++graph[i][j][k1][k2].num;
}
}
}