Вычислительная геометрия. Прямые.

В процессе работы необходимо разработать класс Line и активно его использовать.

A: Уравнение прямой

Прямая задана двумя точками. Выведите коэффициенты A, B, C нормального уравнения прямой.

Вывод программы должен содержать единственную строку print(line), line - объект типа Line

Ввод Вывод
1 2
3 1
-1 -2 5

B: Перпендикулярная прямая

Дано уравнение прямой и координаты точки. Выведите коэффициенты уравнения прямой, перпендикулярной данной прямой и проходящей через данную точку.

Вывод программы должен содержать единственную строку print(line)

Ввод Вывод
0 1 -1
0 0
1 0 0

C: Принадлежность точки прямой

Даны координаты точки и уравнение прямой. Определите, принадлежит ли точка прямой, выведите YES или NO.

Добавьте в класс Line метод contains(), принимающий Point и возвращающий boolean

Ввод Вывод
3 7
-2 1 -1
YES

D: Взаимное расположение двух точек

Добавьте в класс Line метод, принимающий два Point-а и возвращающий boolean

Даны две точки и уравнение прямой, точки не лежат на прямой. Выведите YES, если точки лежат по одну сторону от прямой и NO в противном случае.

Ввод Вывод
0 0
2 4
2 -1 -1
YES

E: Классификация прямых

Программа получает на вход шесть чисел: коэффициенты уравнений двух прямых.

Программа должна вывести 1, если эти прямые совпадают, 2 – если параллельны, 3 – если перпендикулярны и 0 во всех остальных случаях.

Добавьте в класс Line метод is_p arallel, принимающий Line и возвращающий boolean и определите == для прямых

Ввод Вывод
1 2 3
-1 -2 -3
1

F: Расстояние от точки до прямой

Даны пять чисел: координаты точки и коэффициенты нормального уравнения прямой.

Программа должна вывести одно число: расстояние от данной точки до данной прямой.

Добавьте в класс Line метод dist(), принимающий Point

Ввод Вывод
1 1
1 1 -1
0.70711

G: Параллельная прямая

Даны четыре числа: коэффициенты нормального уравнения прямой и величина d.

Программа должна вывести три числа: коэффициенты нормального уравнения любой из прямых, паралелльных данной, и лежащих от нее на расстоянии d.

Добавьте в класс Line метод parallel(), принимающий расстояние и возвращающий объект Line

Ввод Вывод
0 -1 1
1
0 -1 2

H: Основание перпендикуляра

Дано пять чисел: координаты точки и коэффициенты нормального уравнения прямой.

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

Добавьте в класс Line метод foot_of_perp() принимающий и возвращающий Point

Ввод Вывод
1 1
1 1 -1
0.5 0.5

I: Пересечение двух прямых - 1

Дано шесть чисел: коэффициенты нормальных уравнений двух непараллельных прямых.

Программа должна вывести два числа: координаты точки пересечения данных прямых.

Добавьте в класс Line метод cross() принимающий и возвращающий список из Point (в этой задаче он состоит из одного элемента)

Ввод Вывод
1 1 -1
1 -1 0
0.5 0.5

J: Пересечение двух прямых - 2

На плоскости даны две прямые. Каждая прямая задается парой точек, через которые она проходит. Требуется установить, пересекаются ли эти прямые, и найти координаты точки пересечения.

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

Если прямые не пересекаются, выведите одно число 0. Если прямые совпадают, выведите 2. Если прямые пересекаются ровно в одной точке, то выведите сначала число 1, а затем два вещественных числа - координаты точки пересечения.

Ввод Вывод
1 1
2 2
1 10
2 11
0
0 0
1 1
1 0
-1 2
1 0.5 0.5