如何获得像模模式的窦
问题描述:
我试图得到一个不错的向上和向下的动画使用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++
变量。
我尝试应用一个正弦波例如。
答
你似乎需要的是一个三角波。尝试了这一点:
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))
)
)
}
下面是它采用模运算符的一个版本:
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
来创建一个锯齿波,在第二个我们使用%
。
+0
我应该避免只在评论中表示感谢,但我只想为此感谢你:)。令人敬畏的锯齿波! –
答
你可以做这样的事情:
"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...
)
)
);
}
你可能不希望所有的数字都是整数......你呢? – Zac