библиотека для трассировки лучей (пересечения лучей) на 3D-модели полигона - PullRequest
1 голос
/ 05 апреля 2011

Я хочу смоделировать лазерный сканер, который излучает лазерный луч на 3D-модель, чтобы измерить расстояние или другие особенности модели. 3D-модель состоит из вершин в координатах XYZ и граней; каждая вершина также имеет определенные пользователем особенности.

Метод должен быть простым. Я определяю точку обзора и вектор обзора (то есть лазерный луч); что мне нужно сделать, это проверить первую вершину или первую грань, которая пересекается с вектором вида, затем я могу измерить расстояние и оценить объект из ближайших вершин.

Есть ли какая-нибудь библиотека или инструменты для этого?

1 Ответ

2 голосов
/ 05 апреля 2011

То, о чем вы говорите, в очень буквальном смысле: трассировка лучей . Математика и код, лежащий в основе этого, не особенно сложны, особенно если вам не нужно учитывать отражения. Вот учебник для того, чтобы сделать именно это в C ++ здесь ; Пересечение треугольника почти так же просто, как пересечение сферы, и вы можете полностью игнорировать свойства поверхности. Если вы не хотите писать свой собственный код (но, если серьезно, это может быть сто строк, чтобы сделать то, что вы ищете), есть подсказка, как заставить Povray делать то, что вы после здесь .

РЕДАКТИРОВАТЬ: больше математики, включая пересечение треугольника, здесь .

...