javascript - 塑造三 Angular 波和锯齿波

标签 javascript math geometry wave

我很难用打开的图表绘制三 Angular 形和锯齿波形状。公式来自the answer in this post 。 这就是我对三 Angular 形的理解:

    var myArray = [];
    var myVals = [];
    var mytrin = [];
    ti = 2.0 * Math.PI * (880 / 44100);
    theta = 0;
    for(i = 0; i <500; i++){
        myArray.push(i);
        var ke = value = (1.0 - Math.abs(theta - 0.5) * 4);
        mytrin.push(ke);
        theta = theta + ti;
    }

这是一个online demo .

对于锯齿来说也是同样的事情:

var myArray = [];
var myVals = [];
var mytrin = [];
ti = 2.0 * Math.PI * (880 / 44100);
theta = 0;
for(i = 0; i <1000; i++){
    myArray.push(i);
    var ke = theta*2-1;
    mytrin.push(ke);
    theta = theta + ti;
}

here's the demo .

有什么问题的想法吗?

最佳答案

问题出在你的锻炼ke上。你有这个:

(1.0 - Math.abs(theta - 0.5) * 4)

当 theta = 0 时,结果为 -1。当 theta 达到 0.5 时,您将达到 1,但随着 theta 的增加,Math.abs(theta - 0.5) 将继续增加,因此 ke 将继续下降、下降、下降。

您想要做的是使用一些模块化算术将其保持在一定范围内。

我玩过并将其修改为:

1-Math.abs((theta%4)-2);

http://jsfiddle.net/chrisvenus/tMHR8/

它的作用是进行模数处理,使值变为 0-4,然后变为 0-4 并重复(一种锯齿波)。减去 2 使其重复 -2 到 +2。取其绝对值使其从 2 反弹到 0 到 2,然后减去 1 以获得漂亮的 -1 到 1 三 Angular 波。

我的 fiddle 也减少了 i 以使图表更明显。 :)

编辑添加:

另一个问题中的函数不起作用的原因是他在那里声明他的 pos 是一个从 0 到 1 的循环变量(尽管我觉得解释得不是很清楚) )。

关于javascript - 塑造三 Angular 波和锯齿波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12245340/

相关文章:

javascript - Toggle Image On-click 在 div 列表中使用 JavaScript/Jquery

javascript - 允许在 Meteor 中从客户端更新集合

c# - 夹紧旋转/四元数

database - 包含( float ,整数)元组的 100 万个向量的高效比较

javascript - CSS 三 Angular 形在点击时翻转

php - 使用 php/javascript 跟踪用户并禁止多个窗口/选项卡

javascript - 使用制表符 selectRow 方法以编程方式选择行

algorithm - 如何将闭合贝塞尔曲线转换为位图?

graphics - 画一个不完美的圆

geometry - 如何检测多边形是否具有自相交?