參照this programming game我目前正在建造。數學(在WPF中):在翻譯之後獲取新的x,y座標
我正在使用WPF設置畫布動畫,並且我使用BeginAnimation
方法將畫布轉換(移動)到另一個畫布上。
隨着BeginAnimation,我需要指定x和y的From
和To
座標,這是我使用這個像這樣的方法:
//X
Animator_Body_X.From = Translate_Body.X; //Current x-coordinate
Animator_Body_X.To = //The end X-coordinate
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
//Y
Animator_Body_Y.From = Translate_Body.Y; //Current y-coordinate
Animator_Body_Y.To = //The end Y-coordinate
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);
現在畫布需要使用翻譯一個給定的角度,我可以從該方法中獲得。
所以我的問題是,給定了畫布當前旋轉的角度(0-359),開始x和y座標(畫布當前位於的位置)和距離(px),我該如何計算結束座標?即畫布最終將被翻譯成的位置。
alt text http://img244.imageshack.us/img244/4794/canvastranspositionmi5.jpg
在上圖中,我畫的是我想達到一個例子。
假設畫布(固體邊界框)的當前標題(角度)爲130度,並且需要將它翻譯(沿着該角度下的路徑;即根據當前所在的位置)200像素...畫布的新座標(它將停止動畫:虛線邊框)將會是什麼?我如何計算這些新座標的停止位置?
[更新]解決方案:
這裏是工作代碼:
double headingRadians = Heading * (Math.PI/180);
Animator_Body_X.From = Translate_Body.X;
Animator_Body_X.To = Math.Sin(headingRadians) * pix + Translate_Body.X;
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
Animator_Body_Y.From = Translate_Body.Y;
Animator_Body_Y.To = ((Math.Cos(headingRadians) * pix) * -1) + Translate_Body.Y;
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);
它幾乎與你的方程一起工作。 但它向後移動,而不是向前移動。我應該在等式中改變什麼? – 2009-02-10 22:40:44
由x和y的變量,你的意思是出發點? – 2009-02-10 22:46:09
是的 - 出發點。 如果在向下移動頁面時,'y'座標變大,則可能必須將cos(130)* 200的結果乘以-1。 – 2009-02-10 22:52:23