参考我目前正在构建的这个编程游戏。
我正在使用 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为单位),我如何计算结束坐标?即画布最终将被翻译到的地方。
替代文字 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);