Естественные науки
О пересечении отрезков
Даны декартовы координаты концов отрезков АВ и СD. Требуется определить, по возможности простым способом, пересекаются ли они, не прибегая при этом ни к черчению графиков на координатной системе, ни к совместному решению уравнений соответствующих прямых.
Я б тут тоже не стал с Муму сексом заниматься. Первым делом подмывает, конечно, загуглить классический алгоритм, но я просто помню, что для этой конкретной задачи быстрее его самому придумать)
Достаточно проверить, что концы одного лежат в разных полуплоскостях отн. другого и наоборот.
Берем уравнение прямой, проходящей через две точки, меняем в нем деление на умножение по правилу пропорции (благо случай всего лишь двумерен) и смотрим, что получилось со знаками...
Достаточно проверить, что концы одного лежат в разных полуплоскостях отн. другого и наоборот.
Берем уравнение прямой, проходящей через две точки, меняем в нем деление на умножение по правилу пропорции (благо случай всего лишь двумерен) и смотрим, что получилось со знаками...
Отрезки - не прямые, они пересекаются только в определенном инервале.
Условия пересечения отрезков a(ax1;ay1;ax2;ay2) и b(bx1;by1;bx2;by2) примерно такие:
bx1< ax1< bx2 или ax1< bx2 < ax2
signum(ay1-by1) ≠ signum(ay2-by2)
Если отрезки совпадают, может быть signum(ay1-by1) = signum(ay2-by2) = 0
Вертикальные отрезки я тут не расматривал, если они не взаимоортогональны, можно просто повернуть всю систему.
Условия пересечения отрезков a(ax1;ay1;ax2;ay2) и b(bx1;by1;bx2;by2) примерно такие:
bx1< ax1< bx2 или ax1< bx2 < ax2
signum(ay1-by1) ≠ signum(ay2-by2)
Если отрезки совпадают, может быть signum(ay1-by1) = signum(ay2-by2) = 0
Вертикальные отрезки я тут не расматривал, если они не взаимоортогональны, можно просто повернуть всю систему.
Камшат Мейрамбеккызы
Постараюсь проверить завтра
Камшат Мейрамбеккызы
Для отрезков а (2, 2, 6, 5) и b(0, 3, 4, 4) все вроде ваши неравенства соблюдаются, но тем не менее отрезки не пересекаются.
Камшат Мейрамбеккызы
Пр. см. дополн.
Камшат Мейрамбеккызы
Ой, какая ерунда вышла в дополнении! Неужели я так напечатал? Должно быть:
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
То есть не выражая математические объекты ни графически, ни математически? А как тогда, изобразить их в танце? Это как просить спеть песню не прибегая к звукам.
Камшат Мейрамбеккызы
Я написал не "ни математически", а "по возможности простым способом, не решая систему уравнений прямых...". А решение системы, можете сами убедиться, даёт довольно сложное выражение. Притом ещё потребуется выяснить, расположена ли точка пересечения на самих отрезках или на их продолжениях. А вроде можно найти простые соотношения между упомянутыми координатами.
Камшат Мейрамбеккызы
Пр. см. дополн.
Камшат Мейрамбеккызы
Ой, какая ерунда вышла в дополнении! Неужели я так напечатал? Должно быть:
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
|AB| + |CD| > |AC| + |BD| вроде должно быть условием пересечения AB c CD.
Камшат Мейрамбеккызы
Вроде не удовлетворяет для А (0; 3), В (3; 0), С (2; 2), D(3, 3)
Камшат Мейрамбеккызы
Пр. см. дополн.
Отрезки задают пряугольники со сторонами || осям.
1. Если прямоугольники (по координатам) не пересекаются, то и отрезки не пересекаются.
2. Дальнейший анализ - неск способами только области пересечения прямоугольников. Без труда можно самому алгоритмы составить.
При становлении машинной графики было интересно. Инж дисциплина есть, где такие задачи рассмотрены, "Вычислительная геометрия".
1. Если прямоугольники (по координатам) не пересекаются, то и отрезки не пересекаются.
2. Дальнейший анализ - неск способами только области пересечения прямоугольников. Без труда можно самому алгоритмы составить.
При становлении машинной графики было интересно. Инж дисциплина есть, где такие задачи рассмотрены, "Вычислительная геометрия".
Камшат Мейрамбеккызы
"Отрезки задают пряугольники со сторонами || осям". Не понял. Вот отрезки АВ: А (0; 3) - В (3; 1) и СЕ: С (1; 0) - Е (2; 2,5). О каких прямоугольниках речь? И как узнать, пересекаются ли они, не прибегая к черчению, что и указано в условиях вопроса?
Камшат Мейрамбеккызы
Ой, какая ерунда вышла в дополнении! Неужели я так напечатал? Должно быть:
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Если мне не изменяет память, есть классическое решение через произведение векторов, которое, к тому же, дает координаты точки пересечения. Давно это было, сперва сам изобретал велосипед, потом подглядел красоту в книжке по компьютерной графике.
нуу техническиесли координаты одной из осей не меняются например: (1,1/,1,2/,1,3/,1,4 и тд и хоть 6,1,6/,2,6/,3,6,4/ и тд по той же оси


Камшат Мейрамбеккызы
Пр. см. дополн.
Камшат Мейрамбеккызы
Ой, какая ерунда вышла в дополнении! Неужели я так напечатал? Должно быть:
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD).
Похожие вопросы
- Задача на стереометрию - координаты точки пересечения отрезком сферы
- Как найти геометрическое место точек пересечения м 3 треугольников на одном основании с равными углами при вершине (топ)
- Я тут подумал, если пересечение двух плоскостей - линия, то пересечение двух пространств - плоскость ?
- пересечение параллельных прямых в пространстве
- M1 M2 N множества N в пересечении M1=N в пересечении M2 и N в объединении M1=N в объединении M2: доказать M1
- как построить линию пересечения данных поверхностей пирамиды и полусферы ?
- Пересечение двух конусов
- Как вычислить площадь фигуры образованной пересечением 2 окружностей?
- Как найти коэффициенты функции ax^2 + bx +c если известна только вершина и точка пересечения!?
- Есть два отрезка - длиной,например, 2см и 5см. Вкаком из этих отрезков прямой больше точек? ))))
Я до сих пор не понимаю, как это в дополнении неравенства печатал половинчатыми. Должно быть:
Условия пересечения: если (уС-уА) /(хС-хА) >= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) <= (yB-yD)/(xB-xD);
и наоборот, если (уС-уА) /(хС-хА) <= (yB-yC)/(xB-xC), то д. б. (уD-уА) /(хD-хА) >= (yB-yD)/(xB-xD)