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