本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

毕业设计对象类篇(一)交通灯类之路口状态

所有的路口标号用int road[8]表示,
bool status[8][8]表示道路可否通行。

T字路口


T路口.png
对于T字路口,将道路分为(左,右,下)三个流量出入口,存在的状态有:

0. 全红(特殊状态应对突发事故)

     for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            status[i][j] = false;
        }
    }
×012345
0××××××
1××××××
2××××××
3××××××
4××××××
5××××××
正常状态下考虑红灯可右转,同向变道不受交通灯控制,即永远可通行
status[2][1] = status[4][3] = true;
status[0][1] = status[2][3] = status[4][5] = true;
×012345
0 @
1
2 @ @
3
4 @ @
5
同时需要限制逆行,即永远不可通行
// 出口不能自转和变道
status[0][0] = status[0][2]  = status[0][4]  = false;
status[4][4] = status[4][0]  = status[4][2]  = false;
status[2][2] = status[2][0]  = status[2][4]  = false;
// 出口不能进去
status[1][0] =status[1][4]  = status[1][2] = status[1][3]   = status[1][4] = status[1][5] = false;
status[3][0] =status[3][5]  = status[3][2] = status[3][3]   = status[3][4] = status[3][5] = false;
status[5][0] =status[5][6]  = status[5][2] = status[5][3]   = status[5][4] = status[5][5] = false;
×012345
0×@× ×
1××××××
2×@×@×
3××××××
4× ×@×@
5××××××
对以上情况封装,即init()。后续应禁止对上值做任何改变。
即还有6*6-5-9-18=4个值
status[0][5],status[4][7],
status[2][5],status[0][3],

道路方向

调控状态代码如下

case 3:
            if (emStatus % 4 == 0) {
                status[0][5]=status[4][1]=1;
                status[2][5]=status[0][3]=0;
            } else if (emStatus % 4 == 1) {
                status[0][5]=status[0][3]=1;
                status[4][1]=status[2][5]=0;
            } else {
                status[0][5]=status[2][5]=1;
                status[4][1]=status[0][3]=0;
            }
            break;

解析如下

1. 对边可通行(限制0左转,限制2左转)

status[0][5]=status[4][1]=1;
status[2][5]=status[0][3]=0;

2. 疏通右侧

status[0][5]=status[0][3]=true;
status[4][9]=status[2][5]=false;

3. 导向左侧

status[0][5]=status[2][5]=1;
status[4][1]=status[0][3]=0;

+字路口


+路口.png
对于+字路口,将道路分为(左,右,上,下)四个流量出入口,存在的状态有:

0. 全红(同上)

×01234567
0××××××××
1××××××××
2××××××××
3××××××××
4××××××××
5××××××××
6××××××××
7××××××××
同时需要限制逆行,即永远不可通行
// 出口不能自转和变道
status[0][0] = status[0][2]  = status[0][4]  = status[0][6] = false;
status[2][2] = status[2][0]  = status[2][4]  = status[2][6] = false;
status[4][4] = status[4][0]  = status[4][2]  = status[4][6] = false;
status[6][6] = status[6][2]  = status[6][4]  = status[6][0] = false;
// 出口不能进去
for(int i = 0; i < 8 ; i++){
    status[1][i] = status[3][i] = status[5][i] = status[7][i] = false;
}
———— 本文结束 感谢阅读 ————

推广

 继续浏览关于 Traffic-Network-Model 的文章

 本文最后更新于:2019/03/22 10:59:43,可能因经年累月而与现状有所差异

 引用转载请注明:指尖魔法屋 > 学习笔记 > 毕业设计对象类篇(一)交通灯类之路口状态