Способ, которым я научился, заключается в использовании верхнего уровня, встроенного в методы Xna, и использовании «Reflector» для просмотра внутри этих методов, чтобы увидеть, как они работают.
Чтобы повернуть прямоугольник, каждая из четырех вершин нуждается вбыть преобразованным из того места, где они были: количество градусов вокруг конкретной оси.
В Xna 2d ось всегда является осью Z, и эта ось всегда проходит через начало миров,верхний левый угол экрана в xna.
Таким образом, чтобы повернуть четыре вершины прямоугольника в xna, вы должны сделать что-то вроде этого:
foreach(Vector2 vert in vertices)
{
vert = Vector2.Transform(vert, Matrix.CreateRotationZ(someRadians));
}
Это заставит вершины вращаться (орбита) в верхнем левом углу экрана.
Чтобы повернуть прямоугольник на месте, сначала необходимо переместить прямоугольник в верхний левый угол экрана, немного повернуть его, а затем переместить назад.Все это происходит в одном кадре, поэтому пользователь видит только вращающийся прямоугольник.Есть много способов сделать это в коде, но вот мой любимый:
// assumes you know the center of the rectangle's x & y as a Vector2 'center'
foreach(Vector2 vert in vertices)
{
vert = Vector2.Transform(vert - center, Matrix.CreateRotationZ(someRadians)) + center;
}
Теперь, если вы хотите отразить метод Matrix.CreateRotationZ или метод Vector2.Transform, вы увидитестроки кода MS использовались, чтобы заставить это работать.Работая с ними, вы сможете более эффективно изучать математику без лишних проб и ошибок.