【问题标题】:XNA rotation of a texture according to a point根据点对纹理进行 XNA 旋转
【发布时间】:2012-06-09 15:19:14
【问题描述】:

我正在编写一个小测试项目。我在原点有一个对象(带有位置和边界框),当发生某些事情时(比如在手机上单击鼠标/触摸),我希望从原点对象到该点绘制一条线。

使用纹理,我意识到我将不得不在此处使用旋转,但不知道如何计算将纹理旋转多少。任何帮助将不胜感激。

到目前为止,我有:

Vector2 原点 Vector2 接触点

就是这样。

谢谢大家!

【问题讨论】:

标签: c# math vector xna rotation


【解决方案1】:

有一个简单的公式可以根据 X 和 Y 坐标计算角度:

float angle = Math.Atan2(TouchPoint.Y - Origin.Y, TouchPoint.X - Origin.X);

您可以在接受旋转角度的SpriteBatch.Draw() 的重载中使用此角度。

请参阅此内容以供参考: http://msdn.microsoft.com/en-us/library/ff433992.aspx

您可能想要在度数和弧度之间进行转换:

float rad = deg * Math.PI/180;

float deg = rad * 180/Math.PI;

【讨论】:

  • 感谢 ATan2 方法。正是我正在寻找的 - 结果似乎有点偏离,所以我做了一个快速修复并将结果偏移 200,现在它非常精确!
  • 对!根据对象的轴心和中心,您必须偏移它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多