10 holes = std::make_unique<std::vector<Hole>>();
11 holeMeasurements = std::make_unique<std::vector<Pose2D>>();
15 double size = cornerOne.
distanceTo(cornerTwo) / sqrt(2);
16 this->holes->push_back(
Hole(cornerOne, cornerTwo, size));
20 this->holes->push_back(hole);
24 if (index > holes->size()) {
25 return {NAN, NAN, NAN, NAN, NAN};
28 return holes->data()[index];
33 std::vector<Hole> toCpy;
34 for (uint8_t i = 0; i < holes->size(); i++) {
35 toCpy.push_back(holes->data()[i]);
41 bool foundMatch =
false;
42 this->holeMeasurements->push_back(position);
43 for (uint16_t i = 0; i < this->holes->size(); i++) {
44 if (this->holes->data()[i].pointCouldBeMemberOfHole(position)) {
45 this->holes->data()[i].addPoint(position);
70 for (uint8_t i = 0; i < this->holes->size(); i++) {
72 if (this->holes->at(i).isInSquare(position)) {
83 std::vector<Pose2D> toReturn;
84 for (uint16_t i = 0; i < this->holes->size(); i++) {
85 std::vector<Pose2D> placements = this->holes->at(i).getSuggestedNodePlacements();
86 for (uint16_t j = 0; j < placements.size(); j++) {
87 toReturn.push_back(placements.at(j));
108 for (uint16_t i = 0; i < this->holes->size(); i++) {
109 if (this->holes->at(i).lineIntersectsHole(positionOne, positionTwo)) {
118 for (uint16_t i = 0; i < this->holes->size(); i++) {
119 this->holes->at(i).offset(offset);
121 for (uint16_t i = 0; i < this->holeMeasurements->size(); i++) {
122 this->holeMeasurements->at(i).plus(offset);
void offsetAll(const Pose2D &offset) const
bool lineIntersectsAnyHoleMeasurement(const Pose2D &positionOne, const Pose2D &positionTwo)
void addPoint(const Pose2D &position)
bool nodeCollides(Pose2D position)
Hole getHole(uint8_t index)
std::vector< Hole > getHoles()
std::vector< Pose2D > getSuggestedNodePlacements()
void addHole(const Hole &hole)
double distanceTo(const Pose2D &other) const