防碰撞算法仿真测试平台开发日志(二)——车流仿真

小车显示

首先将小车图片添加到资源文件中
在这里插入图片描述
在主绘制界面的绘图函数中调用资源图片显示函数,使得小车得以显示在界面上:
在这里插入图片描述
在这里插入图片描述

void MapCanvas::paintEvent(QPaintEvent *e)
{
painter.drawPixmap(1,1,QPixmap(":/new/prefix1/Image2/blackcar.png"));
}

试验将车辆显示到直道正中央

//小车运动/

    if(!ListScenes.isEmpty())
    {
       if(ListScenes.at(0)->SceneType==Scene::Straight)//如果此时创建的道路是直道
        {
            Straight* straight = (Straight*)ListScenes.at(0);
            QPointF posScene = toWidget(straight->pos());   //真实世界坐标转成屏幕坐标
            painter.drawPixmap(posScene.x(),posScene.y(),10/Scale,5/Scale,QPixmap(":/new/prefix1/Image2/blackcar.png"));
        }


    }

车辆的左上角顶在直道的中心
在这里插入图片描述

小车实际运动(无规则)

已经实现小车能在屏幕上无规则的运动,主要利用了Qt的定时器功能

    //*******************************定时器事件,用于小车的移动*********************
    if(!ListScenes.isEmpty())  //试验让小车能够显示
    {
        if(ListScenes.at(0)->SceneType==Scene::Straight)//如果此时创建的道路是直道
        {
            Straight* straight = (Straight*)ListScenes.at(0);
            QPointF posScene = toWidget(straight->pos());   //真实世界坐标转成屏幕坐标
            CarPosX=posScene.x()-10/2/Scale;
            CarPosY=posScene.y()-5/2/Scale;                 //减去图片的长宽
            CarPosGlobal=toGlobal(QPointF(CarPosX,CarPosY));  //先将全局真实坐标转化成屏幕坐标进行处理
        }
    }
        QTimer* timer=new QTimer(this);
        timer->start(Internaltime);
        connect(timer,&QTimer::timeout,[=]()
        {
            CarPosGlobal.setX(CarPosGlobal.x()+0.1);
            CarPosWidget=toWidget(CarPosGlobal);
            update();   //手动调用绘图事件,用update更新小车位置
            qDebug()<<"更新小车位置"<<CarPosGlobal.x();
        });


//定时器内容,用于小车的显示end//



//painter.drawPixmap(CarPosWidget.x(),CarPosWidget.y(),9/Scale,16/Scale,QPixmap(":/xiaoche/BlackPolice Car.png"));
    QMatrix matrix;
    matrix.rotate(90);
    painter.drawPixmap(CarPosWidget.x(),CarPosWidget.y(),16/2/Scale,9/2/Scale,QPixmap(":/xiaoche/BlackPolice Car.png").transformed(matrix, Qt::SmoothTransformation));//实现小车图片的转向
    ```![请添加图片描述](https://img-blog.csdnimg.cn/680f9276c0fe41949879fd108ffc45ff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCY56a75pyo5pyo,size_20,color_FFFFFF,t_70,g_se,x_16)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值