Как определить, какие точки находятся внутри многоугольника, а какие нет (большое количество точек)? Координаты точки пересечения двух прямых - примеры нахождения


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

Навигация по странице.

Точка пересечения двух прямых – определение.

Давайте для начала дадим определение точки пересечения двух прямых.

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

Рассмотрим решение примера.

Пример.

Найдите точку пересечения двух прямых, определенных в прямоугольной системе координат на плоскости уравнениями x-9y+14=0 и 5x-2y-16=0 .

Решение.

Нам даны два общих уравнения прямых, составим из них систему: . Решения полученной системы уравнений легко находятся, если разрешить ее первое уравнение относительно переменной x и подставить это выражение во второе уравнение:

Найденное решение системы уравнений дает нам искомые координаты точки пересечения двух прямых.

Ответ:

M 0 (4, 2) x-9y+14=0 и 5x-2y-16=0 .

Итак, нахождение координат точки пересечения двух прямых, определенных общими уравнениями на плоскости, сводится к решению системы из двух линейных уравнений с двумя неизвестными переменными. А как же быть, если прямые на плоскости заданы не общими уравнениями, а уравнениями другого вида (смотрите виды уравнения прямой на плоскости)? В этих случаях можно сначала привести уравнения прямых к общему виду , а уже после этого находить координаты точки пересечения.

Пример.

и .

Решение.

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

Теперь проведем необходимые действия с каноническим уравнением прямой :

Таким образом, искомые координаты точки пересечения прямых являются решением системы уравнений вида . Используем для ее решения :

Ответ:

M 0 (-5, 1)

Существует еще один способ нахождения координат точки пересечения двух прямых на плоскости. Его удобно применять, когда одна из прямых задана параметрическими уравнениями вида , а другая – уравнением прямой иного вида. В этом случае в другое уравнение вместо переменных x и y можно подставить выражения и , откуда можно будет получить значение , которое соответствует точке пересечения заданных прямых. При этом точка пересечения прямых имеет координаты .

Найдем координаты точки пересечения прямых из предыдущего примера этим способом.

Пример.

Определите координаты точки пересечения прямых и .

Решение.

Подставим в уравнение прямой выражения :

Решив полученное уравнение, получаем . Это значение соответствует общей точке прямых и . Вычисляем координаты точки пересечения, подставив в параметрические уравнения прямой:
.

Ответ:

M 0 (-5, 1) .

Для полноты картины следует обговорить еще один момент.

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

Можно, конечно, обойтись и без такой проверки, а сразу составить систему уравнений вида и решить ее. Если система уравнений имеет единственное решение, то оно дает координаты точки, в которой исходные прямые пересекаются. Если система уравнений решений не имеет, то можно делать вывод о параллельности исходных прямых (так как не существует такой пары действительных чисел x и y , которая бы удовлетворяла одновременно обоим уравнениям заданных прямых). Из наличия бесконечного множества решений системы уравнений следует, что исходные прямые имеют бесконечно много общих точек, то есть, совпадают.

Рассмотрим примеры, подходящие под эти ситуации.

Пример.

Выясните, пересекаются ли прямые и , и если пересекаются, то найдите координаты точки пересечения.

Решение.

Заданным уравнениям прямых соответствуют уравнения и . Решим систему, составленную из этих уравнений .

Очевидно, что уравнения системы линейно выражаются друг через друга (второе уравнение системы получается из первого умножением обеих его частей на 4 ), следовательно, система уравнений имеет бесконечное множество решений. Таким образом, уравнения и определяют одну и ту же прямую, и мы не можем говорить о нахождении координат точки пересечения этих прямых.

Ответ:

Уравнения и определяют в прямоугольной системе координат Oxy одну и ту же прямую, поэтому мы не можем говорить о нахождении координат точки пересечения.

Пример.

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

Решение.

Условие задачи допускает, что прямые могут быть не пересекающимися. Составим систему из данных уравнений. Применим для ее решения , так как он позволяет установить совместность или несовместность системы уравнений, а в случае ее совместности найти решение:

Последнее уравнение системы после прямого хода метода Гаусса обратилось в неверное равенство, следовательно, система уравнений не имеет решений. Отсюда можно сделать вывод, что исходные прямые параллельны, и мы не можем говорить о нахождении координат точки пересечения этих прямых.

Второй способ решения.

Давайте выясним, пересекаются ли заданные прямые.

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

Ответ:

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

Пример.

Найдите координаты точки пересечения прямых 2x-1=0 и , если они пересекаются.

Решение.

Составим систему из уравнений, которые являются общими уравнениями заданных прямых: . Определитель основной матрицы этой системы уравнений отличен от нуля , поэтому система уравнений имеет единственное решение, что свидетельствует о пересечении заданных прямых.

Для нахождения координат точки пересечения прямых нам нужно решить систему:

Полученное решение дает нам координаты точки пересечения прямых, то есть, 2x-1=0 и .

Ответ:

Нахождение координат точки пересечения двух прямых в пространстве.

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

Рассмотрим решения примеров.

Пример.

Найдите координаты точки пересечения двух прямых, заданных в пространстве уравнениями и .

Решение.

Составим систему уравнений из уравнений заданных прямых: . Решение этой системы даст нам искомые координаты точки пересечения прямых в пространстве. Найдем решение записанной системы уравнений.

Основная матрица системы имеет вид , а расширенная - .

Определим А и ранг матрицы T . Используем

Для решения задачи разделим ее на следующие этапы:

  1. Рассмотрение задачи со стороны многомерного пространства.
  2. Рассмотрение задачи со стороны двухмерного пространства.
  3. Расчет количества точек пересечения.

Рассмотрение задачи со стороны многомерного пространства

Допустим прямые находятся в трехмерном пространстве, тогда они могут быть не параллельными друг другу в одной из плоскостей и отстоять друг от друга в другой плоскости. Это значит то, что такие прямые будут попарно не параллельны и не будут иметь точек пересечения.

Рассмотрение задачи со стороны двухмерного пространства

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

Расчет количества точек пересечения

При добавлении на плоскость новой не параллельной прямой будут добавляться точки пересечения с теми прямыми, которые уже нанесены на плоскости. Следовательно, две прямые дают 1 точку пересечения. Добавляя третью прямую, мы получаем еще 2 точки пересечения с уже нанесенными двумя прямыми; добавляя четвертую прямую получаем еще 3 точки пересечения; пятую - еще 4 точки пересечения. Таким образом, всего получаем:

1 + 2 + 3 + 4 = 10 точек пересечения

Ответ: 1) многомерное пространство - 0 точек пересечения; 2) двухмерное пространство - 10 точек пересечения.

Две прямые имеют одну точку пересечения. Добавив к ним ещё одну прямую, мы получим ещё 2 точки пересечения с каждой из этих двух прямых. Добавив ещё одну прямую, она даст дополнительно столько точек пересечения, сколько уже было прямых, т.е. ещё 3. И так далее. Каждая n-ая прямая даёт дополнительно (n-1) точек пересечения с (n-1) прямыми.

1 + 2 + 3 + 4 = 10

Всё вышесказанное справедливо в случае если ни одна из любых 3 прямых не имеет 1 общую точку пересечения.

Если же всё-таки прямые могут пересекаться в одной точке, но не все сразу, то тогда расположив 4 прямые звездой мы имеем 1 их точку пересечения, и, добавив 5-ю прямую получим ещё 4 точки. В этом случае у 5 прямых будет 5 общих точек пересечения.

Ответ: 10 точек пересечения будет образовано 5 не параллельными прямыми, когда более 2 прямых не пересекается в одной точке. Или же 5 точек пересечения если более двух прямых может пересекаться в одной точке.

Графическое отображение точки на комплексном чертеже

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

В том случае, когда точка занимает частное положение в пространстве, ее проекции расположены особенным образом. Частным положением точки считаем такое, при котором она находится либо на оси проекций, либо в плоскости проекций. Так, если точка расположена на оси проекций, тогда две ее проекции лежат на этой оси, а третья в начале координат. Если точка расположена на плоскости проекций, тогда одна из ее проекций лежит в этой же плоскости, а две другие – на осях проекций.

Для точек, занимающих частное положение в пространстве, построения следует начинать с проекций, принадлежащих либо оси, либо плоскости проекций.

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

Построение проекций точки по ее координатам

Пусть заданы координаты какой-либо точки А (x, y, z ). Тогда ее проекции строят следующим образом: сначала откладывают абсциссу по оси ОХ ; затем проводят вертикальную линию; далее на ней откладывают ординату по оси OY и аппликату по оси OZ (вверх, либо вниз от оси ОХ в зависимости от знака координат y, z ). По оси OY получают горизонтальную проекцию А 1 , по оси OZ - фронтальную А 2 . Профильную проекцию А 3 строят по А 1 и А 2 (либо по координатам). Например, построим проекции точки А (10, 20, 30), заданной конкретными координатами. Построения показаны на рис. 1.4.

Необходимо помнить, что положение горизонтальной проекции определяется координатами х и y , фронтальной проекции - координатами х и z , профильной проекции - координатами y и z . Ордината y всегда характеризует положение горизонтальной проекции, а аппликата – фронтальной.

Рис. 1.4. Взаимосвязь координат точки и ее проекций:

а) вид в аксонометрии; б) комплексный чертеж.

Исходя из тех же положений, решается обратная задача – определение координат точки по ее проекциям. Если на комплексном чертеже изображены проекции точки, тогда, измерив соответствующие расстояния, определяем ее координаты (см. рис. 1.4, б). Причем для определения всех трех координат достаточно двух проекций, т.к. любая пара проекций однозначно задается тремя координатами.

Удаленность точки от плоскостей проекций

Расстояние точки от какой-либо плоскости проекций определяет положение соответствующих проекций, а именно: расстояние до П 1 характеризует положение фронтальной проекции, расстояние до П 2 – горизонтальной проекции, расстояние до П 3 – и горизонтальной и фронтальной проекций. Так, если известно, что точка А удалена от П 1 на 30 мм, тогда ее фронтальная проекция А 2 удалена от оси ОХ на 30 мм; если задано, что точка А удалена от П 3 на 10 мм, тогда А 1 и А 2 удалены от осей OZ и OY соответственно на это расстояние (рис. 1.5).

Рассмотрим следующий рисунок.

На нем изображен график функции y = x^3 – 3*x^2. Рассмотрим некоторый интервал содержащий точку х = 0, например от -1 до 1. Такой интервал еще называют окрестностью точки х = 0. Как видно на графике, в этой окрестности функция y = x^3 – 3*x^2 принимает наибольшее значение именно в точке х = 0.

Максимум и минимум функции

В таком случае, точку х = 0 называют точкой максимума функции. По аналогии с этим, точку х = 2 называют точкой минимума функции y = x^3 – 3*x^2. Потому что существует такая окрестность этой точки, в которой значение в этой точке будет минимальным среди всех других значений из этой окрестности.

Точкой максимума функции f(x) называется точка x0, при условии, что существует окрестность точки х0 такая, что для всех х не равных х0 из этой окрестности, выполняется неравенство f(x) < f(x0).

Точкой минимума функции f(x) называется точка x0, при условии, что существует окрестность точки х0 такая, что для всех х не равных х0 из этой окрестности, выполняется неравенство f(x) > f(x0).

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

Например, функция y = x^3 в точке х = 0 имеет производную равную нулю. Но точка х = 0 не является точкой минимума или максимума функции. Как известно функция y = x^3 возрастает на всей числовой оси.

Таким образом, точки минимума и максимума всегда будут находиться среди корне уравнения f’(x) = 0. Но не все корни этого уравнения будут являться точками максимума или минимума.

Стационарные и критические точки

Точки, в которых значение производной функции равно нулю, называются стационарными точками. Точки максимума или минимума могут иметься и вточках, в которых производной у функции вообще не существует. Например, у = |x| в точке х = 0 имеет минимум, но производной в этой точке не существует. Эта точка будет являться критической точкой функции.

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

Пусть f(x) некоторая дифференцируемая на интервале (a;b) функция. Точка х0 принадлежит этому интервалу и f’(x0) = 0. Тогда:

1. если при переходе через стационарную точку х0 функция f(x) и её производная меняет знак, с «плюса» на «минус», тогда точка х0 является точкой максимума функции.

2. если при переходе через стационарную точку х0 функция f(x) и её производная меняет знак, с «минуса» на «плюс», тогда точка х0 является точкой минимума функции.

Я боюсь, что не знаком с библиотеками, которые вы используете, но я думаю, что у меня есть разумная идея для алгоритма, который вы могли бы использовать, и я просто займусь тем, как я буду реализовывать это с помощью vanilla python, а затем Я уверен, что вы можете улучшить его и реализовать с помощью этих библиотек. Кроме того, я не утверждаю, что это лучший способ добиться этого, но я хотел получить ответ в разумной степени, так что вот здесь.

Теперь идея исходит из использования кросс-произведения двух векторов в алгоритмах для нахождения выпуклого множества множества точек, например. Graham Scan . Скажем, мы имеем две точки p1 и p2, которые определяют точечные векторы p1 и p2 , начиная с начала (0,0) до (x1, y1) и (x2, y2) соответственно. Перекрестное произведение p1 x p2 дает третий вектор p3 , который перпендикулярен как p1 , так и p2 и имеет величину, заданную площадью параллелограмма, ограниченного векторами.

Очень полезный результат состоит в том, что определитель матрицы

/ x1, x2 \ \ y1, y2 /

Который является x1 * y2 - x2 * y1, дает величину вектора p3 , а знак указывает, является ли p3 "выходящим" из плоскости или "входить" в него. Ключевым моментом здесь является то, что если эта величина положительная, то p2 находится "слева" от p1 , а если она отрицательная, то p2 вправо " p1 .

Надеюсь, этот пример искусства ascii поможет:

P2(4, 5) / / / /_ _ _ _ _. p1(5, 0)

x1 * y2 - x2 * y1 = 5 * 4 - 0 * 5 = 20, и поэтому p2 находится "слева" от p1

Наконец, почему это полезно для нас! Если у нас есть список вершин многоугольника и множество других точек графа, то для каждого ребра многоугольника мы можем получить вектор этого ребра. Мы также можем получить векторы, соединяющие стартовую вершину со всеми остальными точками графа и путем проверки того, лежат ли они слева или справа от края, мы можем исключить некоторые точки для каждого ребра. Все те, которые не удалены в конце процесса, это те точки внутри многоугольника. Во всяком случае, на какой-то код, чтобы сделать это более понятным!

Получите список вершин вашего многоугольника в том порядке, в котором вы их посещали, если бы вы рисовали их против часовой стрелки, например, какой-то пятиугольник мог бы быть:

poly = [(1, 1), (4, 2), (5, 5), (3, 8), (0, 4)]

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

points = set(["(3, 0), (10, -2), (3,3), ...])

Основной бит самого кода на самом деле довольно компактен для того, как долго мне приходилось писать о том, как он работает. to_right принимает два кортежа, представляющих векторы, и возвращает True , если v2 лежит справа от v1 . Затем петли проходят через все края многоугольника и удаляют точки из рабочего набора, если они находятся справа от любого из ребер.

Def to_right(v1, v2): return (v1*v2 - v1*v2) < 0 for i in range(len(poly)): v1 = poly v2 = poly[i] for p in points: if(to_right(v2-v1, p-v1)): points.remove(p)

edit: Чтобы прояснить, тот факт, что они удалены, если они справа, а не слева, связаны с порядком, в котором указаны вершины многоугольника. Если бы они были в порядке по часовой стрелке, вам нужно было бы исключить левые точки вместо этого. На данный момент у меня нет особого решения этой проблемы.

В любом случае, надеюсь, что я прав по этому поводу, и это может помочь кому-то, даже если не OP. Асимптотическая сложность этого алгоритма равна O (mn), где n - количество точек в графе, а m - количество вершин многоугольника, так как в худшем случае все точки лежат внутри многоугольника, и мы должны проверять каждую точку для каждого ребра, при этом никто не удаляется.



Статьи по теме: