之前視覺給出了一個效果~ 需要跳動的水滴,思考了下如果是用動畫去寫的會調死人的。。(真.調死人的)。。?
后來思考了下,可以快速的給出一個demo ?讓視覺調出滿意的參數我們再入手.
這是最后成型的效果
//##############分割線###############//
現在我們來說下怎么做出這個效果
1:所需要的物理知識
牛頓第二定律,胡克定律
2:如何分工
在這里的我們把 水滴看成是一個有質量的球? 而水面就是彈簧 (當然有人對我說 要用波動方程 算出來的水波才是最完美。。。 無奈我是學渣。。當然感謝某土豪策劃的指導)
先來說下球的部分----------------------?
(這里水平方向 我們是沒有阻力的 就是這樣的理想情況 啦啦啦啦)
為了不讓小球能飛出水面 我們要先計算好 小球開始點和結束點 以及能飛到最高點
知道了重力g 和高度h 之后 我們可以計算出 小球的整個過程所用的時間 ?(公式 △S=at^2 ) 可以得到
(h = gt^2) ?所以可以求出 小球飛行需要的時間 t1?
(公式 V0=at ?和 △S = V0t)
那么根據時間t1 可以求出垂直方向的速度 v1 = g*t1/2;
同樣的也可以求出水平方向的 v2 = s/t1 ?
根據公式我們就很容易的獲取 在某一時刻時候小球飛行達到的點了 比如在某個時間點 tx?
那么小球的 x = v2 * tx , y = g * tx^2; 小球的點就是(x,y)?
(這里需要注意下 ?上升和下降)
接下來說下水波的部分----------------------
用圖2的點 p1 的出水點 我們可以 輕松的獲取p1出水點的 垂直方向的加速度 a1
(F=-k·x )? (F = ma)? ? (m是小球的質量? k是彈性系數) 有了這些 我們就可以求出 水波的最高點
以及水波從p1 到 最高點的 時間. ?關于彈動的次數 我們可以自己隨意定 (這里就不考慮阻尼了衰減次數隨我們自己定義了 )?
所以在特定的時刻 我們可以獲取水波中心處于哪個位置. ?當獲得最高點時候 讓兩邊的水波按sin曲線往兩邊算,這樣就看起來是一個平滑的水波了.
(圖略丑 請見諒。)
最后我們看下效果 然后就可以把demo扔給 視覺去調了
下面給出demo地址 demo? (代碼比較ugly ?大家見諒 思路就是這樣) ?