Вращение объекта вокруг центральной точки 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 для определения угла. Остальное потом для меня загадка. Я знаю, что я должен узнать, что все делает, и я собираюсь поступить в колледж (только на десять лет позже), начиная с весны. Я пытался читать их, но я потерян. Любая помощь будет оценена.

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

Ответы на вопрос(2)

Ваш ответ на вопрос