Вращение объекта вокруг центральной точки vector2

Я должен предварять это тем, что я далеко не математик. Код, который я нашел в другом вопросе, похоже, несколько работает ... за исключением того, что он заставляет объект, который я помещаю, вращаться по большому кругу, в основном за пределами экрана.

Вот код:

public void Update(GameTime gameTime)
{
    Location = RotateAboutOrigin(Center, Origin, 0.01f);
}

public Vector2 RotateAboutOrigin(Vector2 point, Vector2 origin, float rotation)
{
    var u = point - origin; //point relative to origin  

    if (u == Vector2.Zero)
         return point;

    var a = (float)Math.Atan2(u.Y, u.X); //angle relative to origin  
    a += rotation; //rotate  

    //u is now the new point relative to origin  
    u = u.Length() * new Vector2((float)Math.Cos(a), (float)Math.Sin(a));
    return u + origin;
} 

Местоположение устанавливается щелчком мыши в произвольной позиции вокруг центрального вектора.

Центр - это (как вы уже догадались) центр объекта, который я «помещаю», когда щелкаю. Он определяется простым разделением высоты и ширины текстуры.

Начало координат - это вектор2, вокруг которого я пытаюсь повернуться. Статически он установлен на уровне 384 384.


Насколько я могу судить, это получение расстояния между двумя векторами, а затем использование atan2 для определения угла. Остальное потом для меня загадка. Я знаю, что должен научиться тому, что делает все, и собираюсь это сделать, когда пойду в колледж (всего на десять лет позже), начиная с весны. Я пытался их прочитать, но я потерялся. Любая помощь будет оценена по достоинству.

Кроме того, если у вас есть хороший сайт для чайников, который вы можете порекомендовать, я буду рад его прочитать.

7
задан Justin Popa 16 November 2011 в 08:26
поделиться