Microcity——仿真路径设计

在使用Microcity进行仿真时,对于物体移动的轨迹的设计是至关重要的一点。

本文主要结合geojson文件的全球航线图,为船舶仿真移动设计行驶路线。

(注:这里用到的航线图对每条航线都标记的起点O和终点D)

大致思路:

获取航线上每个点的位置,然后在每两点之间构造函数,找到直线关系,然后让船舶按照这个直线关系行驶,这样反复循环便可以得到全程的路程设计。

数据收集:

for ...   --遍历所有的航线
    for ...   --遍历point
    if ('O' == point[i] and 'D' == point[i+1]) then
        ...
        table.insert(route_location, 点的坐标)

上文中point代表收集到的船舶在行驶过程中经过的节点,当起点O和终点D都能够对应上时,就说明船舶会经过这段航线。所以此时要获取构成这段航线的每个点的坐标,然后将它们进行整合。 

dx = route_location[i+3] - route_location[i]
dy = route_location[i+4] - route_location[i+1]
a  = dy/dx

接着可以建立每两个位置(x、y)之间的函数表达式,求出其间的斜率a。

于是new_x 便可以以dt递增,new_y可以以a*dt递增,直到递增的new_x或new_y等于route_location中下一节点的位置,也就是等于route_location[i+3]或route_location[i+4]。

ship_model:setpos(new_x, new_y, 10)

此时便可以将船的位置设置为如上述代码所示。其中z轴坐标为10是因为防止地图图形对船模型的遮盖,故将其高度调高。

将上述步骤做for循环后便可以得到船舶按照设计的路线行驶的仿真模拟。

注:如果使用的是2D地图数据,还需要考虑经度180°至-180°跨越的问题。针对这种情况,只需要在原本x坐标的基础上加减360即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值