Как узнать, находится ли точка внутри сложной трехмерной фигуры (файл.ply)
Я работаю над проектом Java, ведьма действительно убивает меня. После нескольких дней исследований на разных форумах в поисках того, что мне действительно нужно, я пришел попросить вашей помощи.
Мои данные:
- Файл.ply (содержит трехмерную фигуру, состоящую из множества треугольников)
- Точка (3D-координаты)
Я хотел бы знать, содержится ли эта точка в сложной трехмерной фигуре.
Я разделил эту проблему на 2 меньшие проблемы:
Как я могу представить сложную трехмерную фигуру в памяти? (Я нашел несколько библиотек, но это кажется действительно сложным для задачи, которую я хочу сделать: Java3D, JBullet, JME3...) Я не хочу, чтобы мое java-приложение пока показывало объект.
Как я могу узнать, находится ли эта точка внутри 3D-фигуры или нет? (Я думал сделать трехмерный вектор, начиная с точки, и посчитать количество пересечений с формой, но я не вижу, как это сделать, и какую библиотеку я могу использовать?)
Может быть, есть более простые способы сделать это, поэтому я тоже к тебе прихожу. Я действительно застрял сейчас, и я хотел бы, если это возможно без написания таможенных библиотек...
(Извините за мое письмо, я не англичанин ^^)
Спасибо за помощь.
1 ответ
Вот один из подходов. Не самое лучшее или самое быстрое, но когда у вас что-то получится, вам будет легче улучшить.
Как я могу представить сложную трехмерную фигуру в памяти?
Реализуйте быстрый и грязный анализатор формата файлов PLY. Вот спецификация формата PLY. Загрузите данные и сохраните их внутри: массив для каждого X, Y и Z. Это все просто Java.
Как я могу узнать, находится ли эта точка внутри 3D-фигуры или нет?
Определите линию на основе вашей точки и некоторой другой произвольной точки. Для каждого многоугольника определите, где он пересекает плоскость ( некоторая помощь) и находится ли точка пересечения внутри или снаружи многоугольника ( некоторая помощь). Как вы предложили, подсчитайте количество пересечений, чтобы определить, находится ли точка внутри или снаружи вашей трехмерной фигуры.