Лабораторная работа №4. Аффинные преобразования на плоскости и вспомогательные алгоритмы

Программа должна содержать следующие возможности:

  • Задать текущий примитив. Должна быть возможность любой из перечня выбирать: точка, ребро (отрезок), полигон (мин требование -- квадрат). Они рисуются мышкой.
  • Очистить сцену.
  • Применение аффинных преобразований к полигону: смещение на dx, dy; поворот вокруг произвольной точки (задается пользователем мышкой) и/или вокруг своего центра; масштабирование относительно произвольной точки (задается пользователем мышкой) и/или относительно своего центра. Все преобразования должны быть реализованы матрицами!
  • Поворот ребра на 90 градусов вокруг своего центра.
  • Поиск точки пересечения двух ребер (добавление второго ребра мышкой, динамически).

Программа должна позволять выполнить следующие проверки:

  • Принадлежит ли точка выпуклому многоугольнику (задание точки мышкой).
  • Принадлежит ли точка невыпуклому многоугольнику (задание точки мышкой).
  • Классифицировать положение точки относительно ребра (задание точки мышкой).