Найти, является ли сегмент линии подсегментом другой линии - PullRequest
0 голосов
/ 08 июня 2019

Как узнать, является ли определенная линия подсегментом другой линии?

Строка 1: (2,2) и (20,20)

Строка 2: (5,5) и (15,15)

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

1 Ответ

0 голосов
/ 08 июня 2019

Кажется, это домашнее задание, поэтому я только набросаю ответ. Вам придется кодировать его самостоятельно.

Во-первых, уклоны одинаковы? Если нет, у них есть только одна общая черта; стоп. Предполагая, что координаты являются целыми числами, вы можете избежать ошибок с плавающей запятой, вычисляя каждый dx и dy и умножая их в кросс-множении (ч / т к комментарию Weather Vane выше).

Во-вторых, у расширенных линий есть общая точка? Это можно сделать, найдя y-перехватчики или другими способами. Если нет, они параллельны; остановить.

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

Отсортируйте каждую пару конечных точек, чтобы получить a и b , такие что a <<em> b . Затем просто сравните крайние левые конечные точки каждого сегмента и крайние правые. Помните, что один или оба могут быть равны.

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