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