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

В программе должны присутствовать следующие примитивы: точка, ребро (отрезок), полигон (мин требование -- квадрат). Они рисуются мышкой.

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

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

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

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