bool HexGridFitting::neighboursIdxInArea()

in IsometricPatternMatcher/HexGridFitting.cpp [700:728]


bool HexGridFitting::neighboursIdxInArea(const Eigen::Matrix2Xd& dotMatrix,
                                         const Eigen::Vector2d& center,
                                         double searchRadius,
                                         Eigen::VectorXi& result) {
  bool flag = false;
  std::vector<std::pair<double, int>> distanceIndxPair;
  Eigen::VectorXd distance =
      ((dotMatrix.row(0) -
        Eigen::MatrixXd::Constant(1, dotMatrix.cols(), center(0)))
           .cwiseAbs2() +
       (dotMatrix.row(1) -
        Eigen::MatrixXd::Constant(1, dotMatrix.cols(), center(1)))
           .cwiseAbs2())
          .cwiseSqrt();
  for (int i = 0; i < dotMatrix.cols(); ++i) {
    if (distance(i) < searchRadius) {
      distanceIndxPair.push_back(std::make_pair(distance(i), i));
      flag = true;
    }
  }
  if (flag) {
    result.resize(distanceIndxPair.size(), 1);
    sort(distanceIndxPair.begin(), distanceIndxPair.end());
    for (size_t i = 0; i < distanceIndxPair.size(); ++i) {
      result(i) = distanceIndxPair[i].second;
    }
  }
  return flag;
}