效果圖
又趕上了一年一度的校招季這個效果來自一道筆試題讓寫出思路如何實現(xiàn)該效果所以按耐不住還是想用代碼去實現(xiàn)一下當(dāng)然實現(xiàn)起來也不是很復(fù)雜
思路
涉及到一些基本的物理定律
單擺的運動周期 T=2 * Math.PI * Math.sqrt(l / 10);
單擺的運動規(guī)律為正余玄函數(shù)
我們先考慮第一圓的運動規(guī)律
對于1圓我們坐標(biāo)系的位置建立在o1位置為原點
它對應(yīng)的 x y隨時間的運動規(guī)律為 (第1個1/4 T和第4個1/4T)
int x = -(int) (l * Math.sin(angle) * Math.cos(W * jiange * count));
int y = (int) Math.sqrt(l * l - x * x);
count為一個自增量去代表時間變化
對于2圓我們坐標(biāo)系的位置建立在o2位置為原點
它對應(yīng)的 x y隨時間的運動規(guī)律為
int x =0
int y =l; (l為擺長)
canvas.drawCircle(0, l, radius, paintcircle2);
對于3圓我們坐標(biāo)系的位置建立在o3位置為原點
它對應(yīng)的 x y隨時間的運動規(guī)律為(第2個1/4 T和第3個1/4T)
int x = -(int) (l * Math.sin(angle) * Math.cos(W * jiange * count));
int y = (int) Math.sqrt(l * l - x * x);
變化規(guī)律與1相同
項目地址
https://github.com/huopochuan/Simplependulum