我在Java中有一個簡單的動畫,它由一個在窗戶上移動的輪子組成。這只是一個簡單的圓圈,從左側的屏幕開始,進入並繼續向右,直到它離開屏幕。然後它循環並重復這個過程。簡單的圓形旋轉(模擬運動)
X
是一個包含車輪位置的變量。它可以在 - (車輪寬度)和車窗尺寸+車輪寬度之間。
我想通過在這個輪子內繪製一個圓來模擬旋轉,它圍繞圓旋轉,就好像它被連接一樣。
想象一下現實生活中帶有紅旗的車輪。隨着車輪轉動,紅色標記將位於車輪邊緣,隨着車輪的進展而移動。這是我想要的行爲。
我得到一個百分比傳遞到我輪類是這樣的:
int percentage = x/windowWidth;
每一幀的輪動作,我打電話wheel.rotate(percentage)
。
這是實現:
private int diameter = 50;
private final int SPOKE_DIAMETER = diameter/5;
public void rotate(double percent){
this.percent = percent;
this.theta = percent*(PI*2);
System.out.println(percent*PI);
}
public void paintComponent(Graphics canvas)
{
// wheel
canvas.setColor(Color.gray);
canvas.fillOval(0, 0, diameter, diameter);
// spinning flag
canvas.setColor(Color.red);
canvas.fillOval((int)(percent*diameter),(int)((sin((percent*(PI*2)))*diameter)), SPOKE_DIAMETER,SPOKE_DIAMETER);
}
x位置工作或多或少我怎麼想,但Y不。它像一個正弦波擺動,這是預期的(我做使用罪...),但是,我不知道如何改變我的數學,以跟隨周圍的圓。
我的實現有什麼問題? (我不是很好用三角函數圖)
那麼,你可以簡單地旋轉'Graphics'上下文...... – MadProgrammer 2014-09-18 22:36:34
是的!如果可以的話,我肯定會這樣做,除非我正在嘗試使用數學(這是一個學校項目)。 – 2014-09-18 22:37:37
東西像http://stackoverflow.com/questions/12964983/rotate-image-around-character-java/12971987#12971987 – MadProgrammer 2014-09-18 22:40:21