如何获得像模数模式的窦

时间:2016-07-06 14:24:05

标签: javascript math modulo

我试图使用javascript在我的网站上创建一个漂亮的上下动画,但我需要这样的序列:

0 1 2 3 4 3 2 1 0 1 2 3 4 ...

但我倾向于用于重复动作的模块只能给我:

0 1 2 3 4 0 1 2 3 4 0 1 2 ...

如何获得圆形图案,例如来自i++变量。

我尝试应用正弦波。

2 个答案:

答案 0 :(得分:2)

你似乎想要的是三角波。试试这个:



domain2




这是一个使用模数运算符的版本:



var period = 8,
    amplitude = 4;

for (var i = 0; i < 50; i++) {
  console.log(
    amplitude * Math.abs(
      2*(i/period - Math.floor(i/period + 1/2))
    )
  )
}
&#13;
&#13;
&#13;

这两个原理都可以通过获取锯齿波的绝对值来创建三角波。在第一个中,我们使用var period = 8, amplitude = 4; for (var i = 0; i < 50; i++) { console.log( (2 * amplitude/period) * ( Math.abs(((i + period/2) % period) - period/2) ) ) }创建锯齿波,在第二个中我们使用Math.floor

答案 1 :(得分:1)

您可以这样做:

"use strict"
for (let i=0;i<20;i+=0.25) { // step size
  console.log(
    Math.round( //integers only
      Math.abs( //positives
        Math.sin(i)*4 //sin goes from 0 to 1, so if your peak is 4...
      )
    )
  );
}