- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本原理与方法
高速路车辆行驶的模拟引言:在我看来,要在三维系统中真实再现高速路上车辆行驶的现状,是不可能的!因为我们不能确切地知道在某一时刻,某台车的具体位置。当然,如果给每台车装个GPS,确切位置的问题将会得到解决,但是给路过的汽车装GPS的方法显然是行不通的。所以我们的三维系统展现的并不是车辆行驶的即时景象,它是模拟的!它是模拟的,却也是现实的体现,主要表现在:场景与现实同步能即时体现路段的拥堵、畅通情况,且车速体现了路段的即时速度能反映突发的意外事故,如车辆意外翻转等某道路拥堵时,后续车辆会选择其它路线车辆根据现实交通规则行驶细节体现真实如车头方向始终与路线方向保持一致、如车辆防碰撞问题、如分路行驶问题、如内外车道车辆数平衡的问题。可以说,除了场景中某车所在位置在现实中可能并不存在一台车外,基本可看做是现实情况的真实反映。相对于二维地图而言,它更形象;相对于其它三维模拟而言,它更真实;相对于真实视频而言,你可以随意移动视角,更畅快地浏览场景,而不用在摄像头间移来移去。这些,是如何做到的呢?我们从车辆的移动原理说起:车辆沿线行驶实现的基本原理车辆要行驶,要移动,即从一个位置移动到另一个位置,从地理上看就是从一个坐标点移动到另一个坐标点。在程序上,我们一般这样来实现:简要地说,就是将整条线路分解了,分解为很多个坐标点,先在第一个坐标点绘出车辆模型,然后擦除,然后在肉眼难以察觉的极短时间间隔内将车辆模型绘制在下一个点,从而实现看似连续的运动。以路段为基础现实中的汽车,是由人驾驶的,按人的意志来行驶。而人,通常会有自己的目的地,也就是说,我们要为汽车设定一个目标,即设定汽车由出发点到目的点的路线。那么沿道路,从出发点到目的点之间的连线即所谓的路线。不同的汽车,出发点和终点可能相同也可能不同,我们把相同的路线看出一种路线,先找出到底有多少种可能的路线。就高速路而言,每一个闸道的入口或出口我们都可以把它看成是出发点或终点。那么按照交通规则,每两个可能的出入口之间的连线我们都应该把它算作一条线路。基于这样的原因,可以发现很多路线会与其它路线有很多公共的路段,那么要标识出哪些是公共路段,则先要将高速路分解为一段一段。此外,由于车检器的原因,我们可以知道不同路段的速度,由于车辆行驶在这些路段上的速度的是不同的,所以将线路进行分段也是必然的。路线与路段的设计与实现路段是真实的,路线是虚构的在此设计中,路段是要画出真实图形的,而路线,不用画出真实的图形,我们在数据库中新建两个表,用路段来表示路线:1、路线表RoadID………1………2………3…………………2、路段表SegIDRoadIDOrderInRoad…115…121…222………..…你可以理解为路线就是一些表格,这些表格中描述了哪条路线是由哪些路段组成的,抽象一点,可以认为路线是在真实路段基础上‘虚构’出来的。在第2个表中,SegID与实际图层对应,为实际的路段图层中,每个路段的真实ID RoadID为路段所属的线路的RoadID,与表1的RoadID对应,(需要注意的是:同一路段可能会属于不同的路线,例如表中SegID为1的路线就同时属于第1,第2两条路线) OrderInRoad为该路段在这条路线中的顺序。(例如路段1和路段2同时属于路线2,它们的顺序分别是第1和第2)当我们要找某条路线时,可以用这样的SQL语句:Selec路线表.*,路段表.* from 路线表 inner join路段表 on路线表.RoadID=路段表RoadID where 条件 order by orderinroad不同路段车速不同的实现方法前面提到,实现车辆的移动,是每隔一段时间将车辆从一个点移动到另一个点来实现的。如果模型移动的时间间隔不变,将同一条线路分解为100个点方法和分解为1000个点的方法相比较,哪个更快呢?显然100个点比1000个点要先走完,即走的速度要快!也就是在程序看来,速度的快慢表现为这条路线分解的点数多少,分解成越多的点数,走得越慢。具体函数关系如何?例如现实速度中100km/h,在时间间隔为0.1秒的情况下,1km的路线要分解为多少个点呢?经推导,公式为:PointCount=(3600 / speed) * (roadLenth / timegap);(其中,speed单位为m/s,roadLenth单位为m, timegap单位为s)根据上述公式,我们可计算得到 PointCount=360, 即在0.1秒的刷新间隔下,我们将1000m的路程分解为360个点,模型的速度即可与现实100KM/h的速度相当。同一路段,速度变化的问题当某路段由拥堵变成畅通,或者由畅通变成拥堵时,要如何模拟这种变化对车辆的影响?例如由于拥堵,路上停了20
文档评论(0)