Как узнать, находится ли точка внутри сложной трехмерной фигуры (файл.ply)

Я работаю над проектом Java, ведьма действительно убивает меня. После нескольких дней исследований на разных форумах в поисках того, что мне действительно нужно, я пришел попросить вашей помощи.

Мои данные:

  • Файл.ply (содержит трехмерную фигуру, состоящую из множества треугольников)
  • Точка (3D-координаты)

Я хотел бы знать, содержится ли эта точка в сложной трехмерной фигуре.

Я разделил эту проблему на 2 меньшие проблемы:

  • Как я могу представить сложную трехмерную фигуру в памяти? (Я нашел несколько библиотек, но это кажется действительно сложным для задачи, которую я хочу сделать: Java3D, JBullet, JME3...) Я не хочу, чтобы мое java-приложение пока показывало объект.

  • Как я могу узнать, находится ли эта точка внутри 3D-фигуры или нет? (Я думал сделать трехмерный вектор, начиная с точки, и посчитать количество пересечений с формой, но я не вижу, как это сделать, и какую библиотеку я могу использовать?)

Может быть, есть более простые способы сделать это, поэтому я тоже к тебе прихожу. Я действительно застрял сейчас, и я хотел бы, если это возможно без написания таможенных библиотек...

(Извините за мое письмо, я не англичанин ^^)

Спасибо за помощь.

1 ответ

Вот один из подходов. Не самое лучшее или самое быстрое, но когда у вас что-то получится, вам будет легче улучшить.

Как я могу представить сложную трехмерную фигуру в памяти?

Реализуйте быстрый и грязный анализатор формата файлов PLY. Вот спецификация формата PLY. Загрузите данные и сохраните их внутри: массив для каждого X, Y и Z. Это все просто Java.

Как я могу узнать, находится ли эта точка внутри 3D-фигуры или нет?

Определите линию на основе вашей точки и некоторой другой произвольной точки. Для каждого многоугольника определите, где он пересекает плоскость ( некоторая помощь) и находится ли точка пересечения внутри или снаружи многоугольника ( некоторая помощь). Как вы предложили, подсчитайте количество пересечений, чтобы определить, находится ли точка внутри или снаружи вашей трехмерной фигуры.

Другие вопросы по тегам