for (int i = 0; i < agvs.size(); i++) { for (int j = 0; j < tasks.size(); j++) { if (tasks[j].id == agvs[i].get_task_id()) { completed_task_index = j; break; } } if (tasks[completed_task_index].completed == 2 ) { // 如果已经完成任务 paths[i].clear(); continue; // 跳过此次循环 } if (! paths[i].empty()) { int cur_x = agvs[i].getCurrentX(); int cur_y = agvs[i].getCurrentY(); Node* next_node = paths[i][0]; float speed = agvs[i].getSpeed(); float distance = sqrt(pow(next_node->x - agvs[i].getCurrentX(), 2) + pow(next_node->y - agvs[i].getCurrentY(), 2)); float time = distance / speed * 1000; //_MAP[cur_x][cur_y] = 1; QTimer::singleShot(time, this, &, i, next_node, cur_x, cur_y { // 离开当前位置时将标记设为0 //_MAP[cur_x][cur_y] = 0; agvs[i].setCurrentX(next_node->x); agvs[i].setCurrentY(next_node->y); this->update(); // 在窗口中重绘 }); } },增加代碼:獲取path上的坐標,畫出坐標兩點之間的連綫
时间: 2024-01-20 13:03:44 浏览: 64
AGVS.rar_AGVS调度_gulf5j4_scheduling AGV_wpf agv调度系统_调度控制
5星 · 资源好评率100%
可以在 `if (!paths[i].empty())` 的代码块中加入以下代码:
```c++
if (paths[i].size() > 1) {
QPainterPath path;
path.moveTo(paths[i][0]->x, paths[i][0]->y);
for (int k = 1; k < paths[i].size(); k++) {
path.lineTo(paths[i][k]->x, paths[i][k]->y);
}
QPainter painter(this);
painter.setPen(QPen(Qt::red, 2));
painter.drawPath(path);
}
```
这段代码会获取当前 AGV 的路径 `paths[i]` 上的所有节点坐标,并在窗口中绘制出节点之间的连线。绘制的线条颜色为红色,宽度为 2。
阅读全文