Прошу помощи в составлении уравнений пересечения отрезка (сигнал роутер-человек) и плоскостей (стены и перекрытия) в пространстве





Прошу помощи в составлении уравнений пересечения отрезка (сигнал роутер-человек) и плоскостей (стены и перекрытия) в пространстве. Координаты стен и перекрытий заранее известны. Координаты человека (Xч,Yч,Zч) . Координаты 9 роутеров: от 1го (Xr1,Yr1,Zr1) до 9го (Xr9,Yr9,Zr9).

ДОПОЛНЕНИЕ. Учитывая, что каждое помещение это параллепипед со стенами АBCD и А1B1C1D1 и перекрытиями ABB1А1 и DCC1D1 простая формула плоскости Аx + Вy + Сz + D=0 не подходит т.к. распространяется не ограниченно. Нужно задать плоскость ограниченную четырьмя точками. Прошу подсказать где посмотреть формулу плоскости ограниченную 4 точками? Точки пересечения собрался расчитывать  скалярным произведением нормали плоскости и направляющего вектора должно быть не равно нулю.

не проверено

Всего: 15 комментариев.
Добавить комментарий

Александр Емелин    18.01.2024 в 13:07
Здравствуйте, решите задачу в общем виде - с координатами (Xч,Yч,Zч) - да, именно с параметрами Xч,Yч,Zч (вместо которых можно будет потом подставлять конкретные значения). Зная координаты каждого роутера, уравнение каждой плоскости и точку (Xч,Yч,Zч), нетрудно вывести формулы пересечения соответствующих отрезков с каждой плоскостью. Если в здании n межэтажных перекрытий и m вертикальных перегородок (внутренних стен), то для КАЖДОГО роутера должно получиться (n+m) уравнений. Да, задача трудоёмкая, но разрешимая, кстати, поскольку перекрытия и перегородки соответственно параллельны, то, возможно, будет всё не так страшно. Далее можно подставлять конкретные координаты Xч = a, Yч = b, Zч = c в полученные уравнения, выясняя точки пересечения всех отрезков со всеми перекрытиями и перегородками.

Александр Емелин    18.01.2024 в 13:18
Для лучшего понимания ситуацию удобно смоделировать на каком-нибудь простом примере, когда в здании, например, 2 роутера, 1 межэтажное перекрытие и, допустим, 2 внутренние стены. В этом примере получится всего 6 уравнений.

Александр Емелин    18.01.2024 в 13:23
Следует ещё заметить, что внутренние стены не обязаны быть параллелльными и даже могут перескаться не под прямым углом, но это приниципиально не влияет на алгоритм решения.

Сергей    18.01.2024 в 15:50
Уравнения пересечения плоскости и линии показаны везде. Двух и более плоскостей и одной линии можно прописать. Сложность в том что нужны ограничения: считаем плоскости (1 вар точки пересечения или 2 вар углы (должен быть не равен 0 и 180 иначе парралельны)) ТОЛЬКО между точками Ч(Хч,Yч, Zч) и Р1((Хr1,Yr1, Zr1). т.е. нужны только стены и перекрытия от роутера до человека, а не на всем пути сигнала. Все известные мне формулы это ограничение не несут.

Александр Емелин    18.01.2024 в 16:23
Углы в этой задаче можно не использовать вообще - если отрезок (от человека до роутера P1, к примеру) не пересекает ту или иную плоскость, то соответствующее уравнение будет просто несовместно (не иметь решений). Уравнения же, которые имеют решения, как раз и будут определять нужные точки. И тут есть два "крайних" частных случая: 1) между человеком и роутером P1 нет перегородок (тогда все уравнения, относящиеся к роутеру Р1, несовместны), 2) отрезок пересекает все перегородки (все эти уравнения совместны).

Ограничения следует наложить только на координаты Xч,Yч,Zч человека (он должен находиться внутри здания).

Александр Емелин    18.01.2024 в 16:32
То есть количество точек пересечения равно количеству совместных уравнений, относящихся к роутеру Р1 (в нашем примере), а количество совместных уравнений зависит от конкретного местоположения человека (конкретных значений его координат)

Александр Емелин    18.01.2024 в 16:45
+ также уточню, что "крайний" случай 2 (когда отрезок пересекает все плоскости), возможен далеко не во всех ситуациях - это уже зависит от расположения роутера. Так, этот случай невозможен, если роутер установлен на 2 этаже трёхэтажного здания - где бы ни находился человек, соответствующий отрезок не пересечёт все плоскости.

Александр Емелин    20.01.2024 в 17:06
И да, то самое условие! - человек и роутер должны находиться по разные стороны плоскости (тогда точка пересечения прямой и плоскости нас устраивает). Это легко проверяется с помощью линейных неравенств: https://mathter.pro/angem/5_1_3_lineinye_neravenstva_v_prostranstve.html

Сергей    04.03.2024 в 07:35
ДОПОЛНЕНИЕ. Учитывая, что каждое помещение это параллепипед со стенами АBCD и А1B1C1D1 и перекрытиями ABB1А1 и DCC1D1 простая формула плоскости Аx + Вy + Сz + D=0 не подходит т.к. распространяется не ограниченно. Нужно задать плоскость ограниченную четырьмя точками. Прошу подсказать где посмотреть формулу плоскости ограниченную 4 точками? Точки пересечения собрался расчитывать скалярным произведением нормали плоскости и направляющего вектора должно быть не равно нулю.

Сергей    04.03.2024 в 12:47
Координаты точек известны
А (0;0;0) В (6;0;0) С (6;0;3,5) D (0;0;3,5)
А1(0;5;0) В1(6;5;0) С1(6;5;3,5) D1(0;5;3,5)

Александр Емелин    05.03.2024 в 13:49
То, что плоскости не ограничены - не имеет значения, важно, чтобы человек и роутеры находились внутри здания. Здание имеет формулу прямоугольного параллелепипеда; каждая из 6 граней задаётся линейным уравнением. Вам нужно составить систему из 6 линейных неравенств, которая определяет внутренность здания (параллелепипеда). Координаты человека и каждого роутера должны удовлетворять этой системе. После этой проверки можно смело выяснять, сколько перегородок между человеком и роутерами (что мы уже разобрали выше).

Сергей    05.03.2024 в 17:19
формула 5 как правильно записать? вар1 или вар2?
https://disk.yandex.ru/d/TMVG_DaRQ3DZCA

Александр Емелин    06.03.2024 в 12:38
Конкретику смотреть не буду, возвращаюсь к неравенствам. Декартову систему координат удобно выбрать так, чтобы три стороны здания лежали в координатных плоскостях. Тогда, например:
0< x < 20 - длина здания 20;
0< y < 10 - ширина 10;
0< z < 6 - высота 6.
Координаты человека и роутеров должны удовлетворять этим неравенствам, при этом не имеет значения, что плоскости бесконечны - запускаем проверку на наличие перегородок.

Сергей    06.03.2024 в 16:49
плоскость по трм точкам А1(0;5;0) В1(6;5;0) С1(6;5;3,5)
Уравнение плоскости 21у-105=0 вектор нормали плоскости n(0;21;0)
плоскость по трм точкам А2(0;10;0) В2(6;10;0) С2(6;10;3,5)
Уравнение плоскости 21у-210=0 вектор нормали плоскости n(0;21;0) и т.д. Вектор нормали плоскости не меняется. Это нормально? Как тогда узнать какая плоскость пересекается если вектор будет одинаковый для всех плоскостей?

Александр Емелин    07.03.2024 в 05:21
Какие именно получились уравнения - не имеет значения - вам нужно определить - по одну сторону находится человек и роутер относительно той или иной плоскости или по разные. Этот вопрос проясняется с помощью линейных неравенств:
https://mathter.pro/angem/5_1_3_lineinye_neravenstva_v_prostranstve.html
Проверку следует провести для всех внутренних стен и межэтажных перекрытий - таким образом вы получите искомое количество перегородок на пути человека и роутера. После чего составляем уравнения прямой, на которой лежит отрезок, соединящий человека и роутер, и находим точки пересечения прямой с нужными плоскостями (вроде в этом состояла задача, да?)

Для лучшего понимания рекомендую изучить "плоский" случай (ничего не пропуская):
http://mathprofi.ru/lineinye_neravenstva.html
- в особенности Пример 6 - эта задача эквивалентна ситуации, когда в здании один этаж и одна внутренняя стена. Представьте, что в этом здании находится человек и один роутер и прорешайте вашу задачу для простейшей ситуации.
В пространственном случае принцип такой же, соотвествующий алгоритм несложно реализовать программно.