国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

《每周一點canvas動畫》——波形運動

BingqiChen / 1554人閱讀

摘要:在上一節我們介紹了動畫中有關三角函數的內容,以及一個跟隨鼠標旋轉的箭頭動畫。這一節主要介紹三角函數的波形運動。我們用函數模仿的第一個運動,就是這種類似水草擺動的運動。脈沖運動便是將函數運用于物體大小的變化中。

在上一節我們介紹了canvas動畫中有關三角函數的內容,以及一個跟隨鼠標旋轉的箭頭動畫。這一節主要介紹三角函數的波形運動。包括:

平滑運動

線性運動

脈沖運動

1.Sin函數的波形

sin函數的波形想必騷年們不會感到陌生,其圖形如下所示:

如果想要取得sin函數在[0, 2π]之間的值,非連續的情況下,可以這樣估算。

    for(var angle=0; angle
1.平滑運動

首先介紹Math.sin(angle)的第一個應用——平滑運動

平滑是指物體一種流暢的運動狀態,與之相反的是機械式的簡單的從0到1再到-1和0的這么一種狀態。平滑的運動更加趨近與自然的運動狀態,類似水草在水流中的左右搖擺,在擺動的過程中是有速度的變化的。

我們用Math.sin函數模仿的第一個運動,就是這種類似水草擺動的運動。另外,因為sin函數的值介于[-1,1]之間。所以在實際代碼中需要乘以一個較大的值(也就是振幅,你懂得),使其的擺動看起來明顯一些。水草擺動的如下圖所示,在線演示地址。

具體代碼如下

//水草類
function Aqu(color, num, amp){
      this.startPoint = [];
      this.endPointX = [];
      this.endPointY = [];
      this.amp = [];
      this.beta = 0;
      this.color = (color == undefined)?"#3b154e":color;
      this.num = (num == undefined)?80:num;
}
       
 Aqu.prototype.init = function(){
       for(var i=0; i

相比于機械的加減是不是更加的流暢呢?當然,你也通過改變Math.sin(this.beta)中的遞增角度值,控制擺動的速度。

2.線性運動

線性運動是最簡單的一種運動,物體勻速朝某個方向運動,就是線性運動。

原理很簡單,具體代碼請查看linear-vertical-motion.html

   

其實,這里如果你把angle += 0.05的注釋取消,你會發現球的運動軌跡就與sin函數的圖像一致了。

3.脈沖運動

除了作用于物體的速度,sin函數仍然可以作用于物體的大小變化。脈沖運動便是將sin函數運用于物體大小的變化中。

具體代碼如下,詳細代碼請查看plusing-motion.html

window.onload = function(){
            var canvas = document.getElementById("canvas");
            var context  = canvas.getContext("2d");

            var angle = 0,
                range = 0.5,
                speed = 0.05,
                centerScale = 1;

            var ball = new Ball();
                ball.x = canvas.width/2;
                   ball.y = canvas.height/2;

            (function drawFrame(){
                window.requestAnimationFrame(drawFrame,canvas);
                context.clearRect(0,0,canvas.width,canvas.height);
                
                //sin值的變化,導致 ball.scaleX , ball.scaleY屬性變化
                ball.scaleX = ball.scaleY = centerScale + Math.sin(angle)*range;
                angle += speed;

                ball.draw(context);
            })();
        }

由此你應該知道,除了位置屬性,我們還可以將sin函數與其他的屬性相結合,來形成不同的運動形式。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79227.html

相關文章

  • 周一canvas動畫》——波形運動

    摘要:在上一節我們介紹了動畫中有關三角函數的內容,以及一個跟隨鼠標旋轉的箭頭動畫。這一節主要介紹三角函數的波形運動。我們用函數模仿的第一個運動,就是這種類似水草擺動的運動。脈沖運動便是將函數運用于物體大小的變化中。 在上一節我們介紹了canvas動畫中有關三角函數的內容,以及一個跟隨鼠標旋轉的箭頭動畫。這一節主要介紹三角函數的波形運動。包括: 平滑運動 線性運動 脈沖運動 1.Sin函數...

    Pikachu 評論0 收藏0
  • 基于Canvas動畫基本原理與數理分析

    摘要:注以下所有代碼托管到動畫的數理分析有了前面的基礎知識,現在我們就會想如果我們能夠在每秒幀,內渲染張圖像,并且每一張圖像的內容發生微調,那么在秒鐘整個畫面就會產生動畫效果了。 什么是動畫? 就像思考哲學問題無法回避思維和存在的關系一樣,制作動畫同樣無法逃避的問題是動畫的原理是什么?這里提一句題外話,任何原理的東西通常難以讓你短期拾掇成果,但在隱約的未來會起到難以置信的效果,不信就看接下來...

    genedna 評論0 收藏0
  • 周一canvas動畫》——圓周運動

    摘要:接每周一點動畫波形運動圓周運動可以分為兩種基本的形式正圓運動和橢圓運動。上圖展示了從圓的函數表達式到圓的參數方程之間的轉換過程。而圓的參數方程就表示的是一個圓。三兩點之間的距離按理來說,連點之間的距離是不會用到三角函數的。 接《每周一點canvas動畫》——波形運動 圓周運動可以分為兩種基本的形式:正圓運動和橢圓運動。在講解圓周運動之前,必不可少的數學公式即將襲來。so,各位騷年們,請...

    EscapedDog 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<