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

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

В программе предусмотреть создание и редактирования многоугольника, списка рёбер и списка точек (можно одну-две).

В программе предусмотреть рисование единственного примитива (ребра, многоугольника).

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

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

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

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