Введение в тему начинается с понятия прямой в пространстве и на плоскости: чаще всего мы описываем прямую не только уравнениями через x и y, но удобнее всего — через векторный или параметрический формат. В этой записи я подробно объясню, что такое параметрическое уравнение прямой, как его получить из заданных данных (точки и направляющий вектор или двух точек), и потом приведу несколько надёжных методов для проверки коллинеарности точек как в двумерном, так и в трёхмерном случае. Дам практические алгоритмы, примеры с пошаговыми вычислениями и советы по обработке вычислительных погрешностей.
Параметрическое уравнение прямой — это представление прямой с помощью параметра t. В векторной форме оно записывается как r = r0 + t v, где r — радиус-вектор произвольной точки на прямой, r0 — радиус-вектор некоторой фиксированной точки на прямой (опорной), v — направляющий вектор (вектор направления), а t — параметр, принимающий любое вещественное значение. В координатном виде для двумерного пространства это выглядит так: x = x0 + a t, y = y0 + b t, где v = (a, b). Для трёхмерного пространства добавляется z = z0 + c t, где v = (a, b, c).
Как получить параметрическое уравнение в типичных задачах? Есть два распространённых способа:
Полезная альтернатива параметрической форме — симметрическое уравнение прямой. Если компоненты направляющего вектора не равны нулю, можно исключить t: (x − x0)/a = (y − y0)/b [= (z − z0)/c]. Эта запись удобна для аналитических преобразований, но её нельзя использовать, когда какая-либо компонента a, b или c равна нулю — тогда нужно возвращаться к параметрической форме или разделять на случаи (например, для вертикальной прямой x = const). Таким образом, параметрическое представление универсально и не теряет информации при нулевых компонентах вектора направления.
Теперь перейдём к основной задаче: как проверить коллинеарность трёх и более точек. Коллинеарность означает, что все точки лежат на одной прямой. Быстрые и надёжные методы:
Приведу подробный пошаговый пример в 2D. Пусть даны точки A(1,2), B(4,5), C(7,8). Шаг 1: вычислим разности: AB = (3,3), AC = (6,6). Шаг 2: проверим пропорциональность: 3/6 = 0.5, 3/6 = 0.5 — равны, значит вектора пропорциональны. Или детерминант: |3 3; 6 6| = 3·6 − 3·6 = 0. Следовательно, A, B, C коллинеарны. Дополнительно можно записать параметрическое уравнение прямой через A и направляющий вектор v = AB = (3,3): x = 1 + 3t, y = 2 + 3t. Проверим точку C: решив 1 + 3t = 7 => t = 2, и 2 + 3·2 = 8, согласуется.
Пример в 3D, чтобы показать использование векторного произведения. Пусть P1(1,0,2), P2(3,−1,6), P3(5,−2,10). Шаг 1: векторы v1 = P2−P1 = (2, −1, 4), v2 = P3−P1 = (4, −2, 8). Шаг 2: вычисляем векторное произведение v1 × v2. Компоненты: i*(−1*8 − 4*(−2)) − j*(2*8 − 4*4) + k*(2*(−2) − (−1)*4) = i*(−8 + 8) − j*(16 − 16) + k*(−4 + 4) = (0, 0, 0). Получили нулевой вектор, значит вектора коллинеарны, а точки лежат на одной прямой. Можно также заметить, что v2 = 2·v1, поэтому все три точки коллинеарны. Параметрическое уравнение через P1: x = 1 + 2t, y = 0 − t, z = 2 + 4t.
Важно учитывать практические нюансы. При вычислениях с дробными или плавающими числами точность ограничена, поэтому при проверке равенства детерминанта или компонентов векторного произведения всегда используйте небольшой допуск ε (например, 1e−9 или 1e−12 в зависимости от масштабов чисел). Если модуль результата меньше ε, воспринимаем его как ноль. Ещё одна тонкость: если проверяем множество точек (больше трёх), достаточно проверить, что все векторы Pi − P1 пропорциональны одному направляющему вектору v, например, P2 − P1. Практический алгоритм: вычислить v = P2 − P1, для каждого i от 3 до n проверить, что v × (Pi − P1) = 0 (в 3D) или детерминант = 0 (в 2D).
Дополнительно рассмотрим частные случаи и полезные замечания. Если хотя бы две точки совпадают, а остальные лежат на одном и том же положении — это тривиальная коллинеарность. Если две точки совпадают, третью проверить нельзя способом деления на (x3 − x1) и т. п.; лучше использовать детерминант или векторное произведение, которые корректно работают с нулевыми векторами. Для вертикальных прямых в 2D (x = const) симметрическое уравнение не применимо — но параметрическое и детерминантный метод всё ещё работают корректно. Наконец, идея площади треугольника как детерминантного критерия — очень полезна: треугольник с координатами вершин P1, P2, P3 имеет площадь S = 0.5 * |det([P2−P1, P3−P1])|; S = 0 эквивалентно коллинеарности.
Для закрепления приведу компактный чек-лист действий (алгоритм) для проверки коллинеарности точек:
В заключение: понимание параметрического уравнения прямой даёт гибкий инструмент для аналитической геометрии, а набор критериев для проверки коллинеарности точек (пропорции, детерминант, векторное произведение, ранг матрицы) позволяет решать широкий круг задач — от экзаменационных задач до практических задач в программировании и компьютерной графике. Помните про вырожденные случаи, плавающую арифметику и удобство параметрической формы при переходе между разными представлениями прямой. Если нужно, могу привести дополнительные примеры с дробными координатами, показать, как переходить от параметрической формы к канонической или ввести понятие охвата отрезка t ∈ [0,1] для параметрического задания отрезка.