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

原项目代码分析

原项目代码类图

各类文件解析(按难度排序)

  1. Point (坐标类,使用经度,维度用来表示一个点)

Point.h

  1. #  
  2. pragma once class Point {  
  3.     public: Point(double longitude, double latitdue);  
  4.     bool operator == (Point & point);  
  5.     privatedouble longitude; //经度  
  6.     double latitude; //纬度  
  7. };  
    1. Road(道路类,使用两个点来表示一条道路)

    Road.h

  8. <li>
    #  
    <li>
    pragma once# include "stdafx.h"#  
    <li>
    include "Point.h"#  
    <li>
    include "Vehicle.h"#  
    <li>
    include "TrafficLight.h"#  
    <li>
    include "BitMatrix.h"#  
    <li>
    define R 6378 //地球的平均半径  
    <li>
    # define PI 3.14# define LANNE_AMOUNT 3 //每条道路的车道数量   
    <li>
    # define MIN_VEHICLE 10 //初始状态每条道路的最少车辆  
    <li>
    # define VEHICLE_SIZE 70 class Vehicle;  
    <li>
    class TrafficLight;  
    <li>
    class Road {  
    <li>
        public: Road(double longitude1, double latitude1, double longitude2, double latitude2): point1(longitude1, latitude1), point2(longitude2, latitude2) {  
    <li>
            length = R * 2 * asin(sqrt(pow(sin((latitude1 / 180 * PI - latitude2 / 180 * PI) / 2), 2) + cos(latitude1 / 180 * PI) * cos(latitude2 / 180 * PI) * pow(sin((longitude1 / 180 * PI - longitude2 / 180 * PI) / 2), 2))); //计算道路长度  
    <li>
        }  
    <li>
        bool operator == (Road & road); //用于判断两条道路是否相连  
    <li>
        double countVehicleDensity(void); //计算行车密度, 行车密度 = 车辆数 / (道路长度(km) * 车道数)  
    <li>
        double countCrowdExtent(void); //计算道路拥挤度  
    <li>
        double returnLength(void); //返回道路长度  
    <li>
        bool enterVehicle(void); //当前道路是否能进车  
    <li>
        void updateVehicle(vector < Road > & road); //更新当前道路的车辆  
    <li>
        void creatVehicle(int roadSize, int totalRoadSize, BitMatrix & roadBitMatrix, vector < Road > & road); //为该道路生成车辆  
    <li>
        void enterVehicle(Vehicle & vehicle); //进入车辆  
    <li>
        void updateTrafficLight(void); //更新当前道路的交通灯  
    <li>
          
    <li>
        vector < int > adjoin; //存储相连的道路编号   是否改成private?  
    <li>
        private: Point point1, point2; //道路的两个端点的经纬度  
    <li>
        double length, vehicleDensity, crowdExtent; //length为道路的长度,vehicleDensity为行车密度,crowdExtent为道路拥挤度  
    <li>
        list < Vehicle > vehicle; //当前道路的车辆表  
    <li>
        TrafficLight trafficLight; //交通灯用于控制车辆进入该道路  
    <li>
        int vehicleSize; //当前道路车辆数  
    <li>
    };  
    分析与思考:存储相连采用向量方式?这样真的好吗?一条条道路判断相等再连接?


———— 本文结束 感谢阅读 ————

推广

 继续浏览关于 的文章

 本文最后更新于:2019/10/28 17:30:13,可能因经年累月而与现状有所差异

 引用转载请注明:指尖魔法屋 > 学习笔记 > 原项目代码分析