Два параллельных пересечения линейных сегментов

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

Линейные сегменты, о которых я говорю, являются строкой длины, созданной 2 конечными точками.

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

Я знаю, что могу, может вычислить расстояние между 2 сегментами строк.
Если расстояние 0, проверьте конечные точки, расположенные в другие линейные сегменты или нет.
И это означает, что я еще должен использовать многое из если и && || условия.

Это не трудно, но мой вопрос

"Есть ли прием (или математика) метод для вычисления этого специального аналогичного случая?"

Я надеюсь, что это изображение разъясняет мой вопрос
http://judark.myweb.hinet.net/parallel.JPG

5
задан Judarkness 11 May 2010 в 03:32
поделиться

3 ответа

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

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

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

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

4
ответ дан 15 December 2019 в 00:53
поделиться

Я предполагаю, что вас интересует случай, когда два отрезка параллельны (что определяется проверкой наклона, как говорит Whirlwind), и вы пытаетесь определить, пересекаются ли эти два отрезка.

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

if (segment_contains_point(segment_A, segment_B.start) || 
    segment_contains_point(segment_A, segment_B.end)) {
        // lines overlap
}
0
ответ дан 15 December 2019 в 00:53
поделиться

Предположим, у вас есть две строки, описываемые формулами a.x + b.y + c = 0 и d.x + e.y + f = 0 . Две прямые параллельны, если a = 0 и d = 0 или b / a = e / d . Возможно, вместо того, чтобы выполнять деление, просто убедитесь, что b.d = a.e .

0
ответ дан 15 December 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: