我使用html5畫布爲諧振效果建模,以便在彈簧達到共振時對其進行動畫製作。 還得到了jQuery UI滑塊(最大範圍),在動畫期間動態地改變振盪的頻率(w)。問題在於它的改變,由於某種原因,正弦波在某些點上斷裂,並且動畫不平滑。這隻有在頻率變化時纔會發生,振幅變得更好。 我渲染每一幀的主要功能是:當頻率動態變化時,使振動平穩增加或減少
function doSways() {
var spring = springs[0],
a = 0,
A = params.standParams.A,
w = params.standParams.w;
animIntervalId = setInterval(function() {
ctx.clearRect(0, 0, cnvW, cnvH);
A = params.standParams.A;
w = params.standParams.w;
/*if (w < params.standParams.w) { // with this expression and commented <w = params.standParams.w> it works a bit smoother but still some issues can be noticed, for example sharp increases just after the new change of the frequency (w) on the slider
w += 0.01;
}*/
stand.y = A*Math.sin(a*degToRad*w) + offsetY;
stand.draw();
spring.draw(stand.y, A, w);
if (a++ >= 360) { // avoid overflow
a = 0;
}
},
25);
}
這裏就是我的滑塊改變頻率(W)並將其分配給params.standParams.w
$("#standfreq_slider").slider({
range: "max",
min: 1,
max: 25,
step: 1,
value: 5,
slide: function(event, ui) {
params.standParams.w = parseInt(ui.value);
}
});
);
的是,如果doSways表達函數有點工作,但它支付另一個問題,我需要知道滑動的方向來確定我需要+ =或 - = 0.01 .. 如何使一切工作理想?
問題插圖現場 jsfiddle
您是否嘗試過的+ =和 - =你自己了嗎? – SkullDev
你可以在jsfiddle中模擬一個演示嗎?這樣我們可以看到/測試發生了什麼? – indubitablee
@indubitablee是的當然,https://jsfiddle.net/v98jyr67/8/ – ampawd