Добавлен
как узнать проходит ли отрезок(2 точки)через куб(8 точек)?
желательно джасс

Принятый ответ

Проходит или пересекает хотя бы одну из граней?
+ Куб или выпуклая оболочка на 8ми точках?
+ Нижняя грань куба параллельна земле или у куба произвольная ориентация?

Для куба с параллельной земле нижней гранью:
Рассмотрим сначала вид сверху, тогда у нас есть квадрат и отрезок, найдём пересечение рёбер квадрата и проекции нашего отрезка (проекция получается если построить отрезок по координатам x, y точек начала и конца отрезка, грани квадрата аналогично), найдя точку пересечения отрезка и каждого ребра в отдельности.
Пересечение двух отрезков
В результате может получиться 2, 1 или вообще ни одной точки пересечения.
2: находим Z координаты этих точек, если они лежат одновременно ниже нижней грани или выше верхней (по Z) то пересечения нету, иначе есть
0: Пересечения нет.
1: Проверяем какой из концов отрезка лежит в квадрате, для этого надо определить какой из концов лежит в квадрате. Это можно сделать к примеру так: Находим расстояние от конца отрезка до прямой содержащей ребро квадрата и если все 4 расстояния <= длине ребра то точка принадлежит квадрату. Теперь у нас есть 2 точки (см для 2-х точек).
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
22
11 лет назад
1
Если ты не хочешь углубляться в аналитическую геометрию и, получив аналитическое решение для данной задачи, вбить его в программу, то можешь поступить более простым способом. Разбиваешь отрезок на несколько точек, лежащих на нём с определённым шагом. А область квадрата разбиваешь на совокупность точек по всем трём осям (с определённым шагом в зависимости от необходимой точности). Записываешь все полученные точки разбиения квадрата и отрезка в массив. И затем считаешь расстояние согласно евклидовой метрике между каждой из точек разбиения квадрата и каждой из точек разбиения отрезка. Точки считаются "равными", если расстояние между ними меньше заданной точности, а именно - шага разбиения (он должен быть одинаковым для отрезка и квадрата). Итак, если нашлись "равные точки", значит какая-то из точек отрезка принадлежит квадрату, значит отрезок хоть каким-то местом проходит через квадрат. Вот так - всё просто :)
1
14
11 лет назад
Отредактирован ZregerZ
1
Проходит или пересекает хотя бы одну из граней?
+ Куб или выпуклая оболочка на 8ми точках?
+ Нижняя грань куба параллельна земле или у куба произвольная ориентация?

Для куба с параллельной земле нижней гранью:
Рассмотрим сначала вид сверху, тогда у нас есть квадрат и отрезок, найдём пересечение рёбер квадрата и проекции нашего отрезка (проекция получается если построить отрезок по координатам x, y точек начала и конца отрезка, грани квадрата аналогично), найдя точку пересечения отрезка и каждого ребра в отдельности.
Пересечение двух отрезков
В результате может получиться 2, 1 или вообще ни одной точки пересечения.
2: находим Z координаты этих точек, если они лежат одновременно ниже нижней грани или выше верхней (по Z) то пересечения нету, иначе есть
0: Пересечения нет.
1: Проверяем какой из концов отрезка лежит в квадрате, для этого надо определить какой из концов лежит в квадрате. Это можно сделать к примеру так: Находим расстояние от конца отрезка до прямой содержащей ребро квадрата и если все 4 расстояния <= длине ребра то точка принадлежит квадрату. Теперь у нас есть 2 точки (см для 2-х точек).
Принятый ответ
0
28
11 лет назад
0
я решил строить перпендикуляр почти к каждой плоскости и проверять находится ли точка в кубе,хотя это затратно(5 плоскостей на куб,более 10 кубов каждые .04 секунды)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.