12 std::vector<Point> line;
13 int x0 = isoCoordinatesStart.
x;
14 int x1 = isoCoordinatesEnd.
x;
15 int y0 = isoCoordinatesStart.
y;
16 int y1 = isoCoordinatesEnd.
y;
23 if (x0 != x1 || y0 != y1)
57 int fraction = dy - (dx >> 1);
71 if (0 <= x0 && 0 <= y0)
81 int fraction = dx - (dy >> 1);
95 if (0 <= x0 && 0 <= y0)
110 std::vector<Point> rectangle;
111 int directionX = isoCoordinatesStart.
x < isoCoordinatesEnd.
x ? 1 : -1;
112 int directionY = isoCoordinatesStart.
y < isoCoordinatesEnd.
y ? 1 : -1;
113 int staticX, staticY;
116 uint32_t xDist = std::abs(isoCoordinatesStart.
x - isoCoordinatesEnd.
x);
117 uint32_t yDist = std::abs(isoCoordinatesStart.
y - isoCoordinatesEnd.
y);
119 if (xDist == 0 && yDist == 1)
123 else if (xDist == 1 && yDist == 0)
127 else if (xDist == 0 && yDist == 0)
129 rectangle.push_back(
Point{isoCoordinatesStart.
x, isoCoordinatesStart.
y});
134 staticX = isoCoordinatesStart.
x;
135 staticY = isoCoordinatesEnd.
y;
139 staticX = isoCoordinatesEnd.
x;
140 staticY = isoCoordinatesStart.
y;
143 for (
int x = isoCoordinatesStart.
x; x != isoCoordinatesEnd.
x; x += directionX)
145 rectangle.push_back(
Point{x, staticY});
148 for (
int y = isoCoordinatesStart.
y; y != isoCoordinatesEnd.
y; y += directionY)
150 rectangle.push_back(
Point{staticX, y});
158 std::vector<Point> rectangle;
161 std::tie(startRect.x, endRect.x) = std::minmax(isoCoordinatesStart.
x, isoCoordinatesEnd.
x);
162 std::tie(startRect.y, endRect.y) = std::minmax(isoCoordinatesStart.
y, isoCoordinatesEnd.
y);
164 for (
int x = startRect.x; x <= endRect.x; x++)
166 for (
int y = startRect.y; y <= endRect.y; y++)
168 rectangle.push_back(
Point{x, y});
177 std::vector<Point> neighbors;
179 for (
int xOffset = -distance; xOffset <= distance; ++xOffset)
181 for (
int yOffset = -distance; yOffset <= distance; ++yOffset)
183 if (!includeCentralNode && (xOffset == 0) && (yOffset == 0))
189 neighbor.
x = isoCoordinates.
x + xOffset;
190 neighbor.
y = isoCoordinates.
y + yOffset;
194 neighbors.push_back(neighbor);
204 int neighborOffsetX = neighboringPoint.
x - originPoint.
x;
205 int neighborOffsetY = neighboringPoint.
y - originPoint.
y;
207 switch (neighborOffsetX)
210 switch (neighborOffsetY)
213 return NeighborNodesPosition::CENTER;
215 return NeighborNodesPosition::TOP;
217 return NeighborNodesPosition::BOTTOM;
221 switch (neighborOffsetY)
224 return NeighborNodesPosition::RIGHT;
226 return NeighborNodesPosition::TOP_RIGHT;
228 return NeighborNodesPosition::BOTTOM_RIGHT;
232 switch (neighborOffsetY)
235 return NeighborNodesPosition::LEFT;
237 return NeighborNodesPosition::TOP_LEFT;
239 return NeighborNodesPosition::BOTTOM_LEFT;
244 return NeighborNodesPosition::CENTER;