Модуль: Геометрия


Задача

3 /7


Ленивый Вася и релиз Half-Life 3

Теория Нажмите, чтобы прочитать/скрыть


Прямая может задаваться 5 разными способами:
1) уравнение \( y = kx + b\); самое первое уравнение прямой, которому учат в школе - удобно для построения и вычислений вручную, но в программе его использование весьма неудобно;
2) по 2-м точкам, лежащим на ней - на самом деле достаточно удобно, но имеет достаточно узкое применение;
3) по вектору нормали прямой и точке - вектор нормали к прямой - это вектор, перпендикулярный ей, подробнее о нём ниже;
4) по направляющему вектору прямой и точке - направляющий вектор - это вектор, лежащий на прямой и перпендикулярный вектору нормали (ну логично), о нём ниже;
5) уравнение прямой \(ax + by + c = 0\); классическое уравнение прямой, в большинстве случаев наиболее универсально. Сейчас о нём.

Координаты вектора нормали такой прямой: \((a; b)\) или \((-a; -b)\).

Координаты направляющего вектора такой прямой: \((-b; a)\) или \((b; -a)\).

Прямые параллельны, если:
\({a1 \over b1} = {a2 \over b2}\).

Расстояние от точки до прямой (будьте осторожны: расстояние может быть отрицательным, всё зависит от того, с какой стороны от прямой лежит точка):
\({(a \cdot x_1 + b \cdot y_1 + c) \over \sqrt{a^2 + b^2}}\),
где x1, y1 - координаты точки.

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

Если x1, y1, x2, y2 - координаты первой и второй точек соответственно, то

\(a  = y_1 - y_2\)

\(b = x_2 - x_1\)

\(c = x_1 \cdot y_2 - x_2 \cdot y_1\)

Задача

Свершилось чудо! Наконец-то вышел долгожданный Half-Life 3, о котором мечтали миллионы людей по всему миру! Вася тоже с нетерпением ждал продолжения легендарной серии, и даже не ел в школьной столовой целый месяц, чтобы ему хватило на покупку этого шедевра! Единственная проблема, которая стоит у него на пути - огромное домашнее задание по алгебре. В классе он прошёл новую тему - прямые, и теперь ему нужно сделать аж N задач на построение прямой через 2 точки. Но ведь так хочется поиграть, а на следующий день рассказывать друзьям, какой же там классный графон... Поэтому он попросил Вас, своего друга, помочь ему.
 
Входные данные
В первой строке вводятся координаты первой точки (X1, Y1), (\(-50 <= X_1, Y_1 <= 50\)).
Во второй строке вводятся координаты второй точки (X2, Y2), (\(-50 <= X_2, Y_2 <= 50\)).
 
Выходные данные
В единственной строке выведите подряд 3 целых числа: коэффициенты a, b, c уравнения прямой.
 
Примечание: если у вас не заходит задача, но вы уверены, что всё правильно - попробуйте умножить все коэффициенты на -1. Задача предполагает, что вы использовали формулы, взятые с лекции/теории.

 

Примеры
Входные данные Выходные данные
1
-1 -1
1 1
-2 2 0

time 1000 ms
memory 32 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w6453
Python12
Комментарий учителя