Pascal поворот фигуры

pascal поворот фигуры
На плоскости есть фигура, к примеру прямоугольник с координатами (100, 100, 200, 200)

Нужно перевернуть его относительно своего центра на 45 градусов за часовой стрелкой.

Я так понимаю, что здесь задействована матрица поворота, которая мне ни о чем не говорит, потому буду рад любому примеру с обьяснением

  • 1.Находим (или задаем) центр поворота:
    xc:=(x1+x2+x3+x4) / 4;
    yc:=(y1+y2+y3+y4)/ 4;
    2.Вспоминаем формулу поворота:
    x' = x cos f + y sin f
    y' = y cos f - x sin f
    3.Подставляем смещения в формулу поворота:
    var F,cosF,sinF, x1new, y1new:real;
    F:=45;
    cosF:=cos(F*3.14/180);
    sinF:=sin(F*3.14/180);
    x1new:=xc+(x1-xc)*CosF+(y1-yc)*sinF;
    y1new:=yc+(y1-yc)*CosF-(x1-xc)*sinF;
    и так восемь раз.
  • без матрицы поворот делается так:
    1) находим координаты центра поворота x0, y0.
    2) поворачиваем каждую из четырёх вершин по алгортиму:
    2.1) Расчитываем радиус поворота:
    r = sqrt(sqr(x-x0) + sqr(y-y0)); // это синтаксис Паскаля - квадратный корень из суммы квадратов разностей координат
    2.2) Рассчитываем новые координаты точки:
    x = x0 + r * cos(alfa);
    y = y0 + r * sin(alfa);
    здесь alfa - угол поворота.
    и так для каждой точки... .

    Этот алгоритм верен, если начало отсчёта координат слева внизу. Если слева вверху, то надо знак поменять в формуле для y:
    y = y0 - r * sin(alfa);