稳定步长区间摇摆值

工作中,由于要模拟车辆信息的运动状态下的经纬度,需要每5秒改变一下车辆的经纬度。车辆信息结构如下:

{
  longtitude: 104.07,
  latitude: 30.67 ,
}

我设想的方法是,让每5秒分别给经纬度加上0.01,那么第一个5秒后,为:

{
  longtitude: 104.07 + 0.01,
  latitude: 30.67 + 0.01 ,
}

第二个5秒后就是

{
  longtitude: 104.07 + 0.02,
  latitude: 30.67 + 0.02 ,
}

第n个5秒后就是

{
  longtitude: 104.07 + 0.01*n,
  latitude: 30.67 + 0.01*n ,
}

现在问题来了,如果总是累加,那用不了多久,我的经纬值就会超出地图范围以外。所以,我现在希望,打个比方说,这个累加0.01*n最多不能超出0.3,如果超出,则开始递减0.01,递减最多也不能超过-0.3。

换句话说,我现在有一个区间为[-0.3, 0.3],步长为0.01,从0开始累加(设累加和为let total = 0.01*n ),当total > 0.3时,则开始累减0.01。直到total< -0.3时,则又开始累加0.01。子子孙孙无穷尽也。

代码实现:

let step = 0.01
let total = 0
let positive = true //true means add step; false means decrease step.

setInterval(() => {
      if (total > 0.3) {
        positive = false
      }
      if (total < -0.3) {
        positive = true
      }
      if (positive) {
        total += step
      } else {
        total -= step
      }
    }, 5000)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,852评论 6 13
  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 4,968评论 0 1
  • 文章图片上传不正常,如需文档,可联系微信:1017429387 目录 1 安装... 4 1.1 配置探针... ...
    Mrhappy_a7eb阅读 11,651评论 0 5
  • “呼——”,容我喘口气。本女子刚从附近清仓的百货小商店出来。人其实不多,只是刚刚大脑中理性小子与感性小子暗中...
    娜子非鱼阅读 3,150评论 1 1
  • 乡村的夜晚是寂静的,甚至是死寂。当冬季来临,人们习惯早早上床休息。当照明熄灭,周遭暗下来,沉寂会漫延至整个村庄,每...
    seven1117阅读 1,722评论 0 0