void HexGridFitting::buildBinaryCode()

in IsometricPatternMatcher/HexGridFitting.cpp [669:699]


void HexGridFitting::buildBinaryCode(const Eigen::Matrix3Xi& cubeCoor, int minX,
                                     int maxX, int minZ, int maxZ) {
  int storageMapRow =
      maxZ - minZ > maxX - minX ? maxZ - minZ + 1 : maxX - minX + 1;
  detectPattern_ = Eigen::MatrixXi::Constant(
      storageMapRow, storageMapRow, 2);  // not detected pt in Pattern =2
  indexMap_.setConstant(storageMapRow, storageMapRow,
                        -1);  // not detected pt in index map = -1

  for (int i = 0; i < cubeCoor.cols(); ++i) {
    if (cubeCoor(0, i) != std::numeric_limits<int>::max()) {
      indexMap_(cubeCoor(2, i) - minZ, cubeCoor(0, i) - minX) = i;
    }
  }

  for (int i = 0; i < cubeCoor.cols(); ++i) {
    if (cubeCoor(0, i) != std::numeric_limits<int>::max()) {
      Eigen::Vector2i centerRQ =
          Eigen::Vector2i(cubeCoor(2, i), cubeCoor(0, i));
      centerRQ(0) -= minZ;
      centerRQ(1) -= minX;
      if (ifTwoShot_) {
        binaryCode_(i) = dotLabels_(i);
      } else {
        binaryCode_(i) = getBinarycode(centerRQ, numNeighbourLayer_);
      }
      detectPattern_(cubeCoor(2, i) - minZ, cubeCoor(0, i) - minX) =
          binaryCode_(i);
    }
  }
}