稳定步长区间摇摆值

工作中,由于要模拟车辆信息的运动状态下的经纬度,需要每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)

你可能感兴趣的:(稳定步长区间摇摆值)