Это всего лишь БОЛЬШОЙ обобщенный вопрос, касающийся лучей (и / или отрезков, ребер и т. Д.) И их места в программном 3D-движке, который выполняет / не выполняет операции трассировки лучей. Я изучаю основы, и я первый, кто признает, что мало что знаю об этом, поэтому будьте добры. :)
ОК, я удивляюсь, почему параметризованная линия не используется вместо луча (или они ??). Я просмотрел несколько файлов cpp по всему Интернету и увидел, что несколько ресурсов определяют объект Ray.cpp, один из которых содержит вершину и вектор, а другой использует точку и вектор. Я также новичок в математике за линиями и отрезками, так что, пожалуйста, держись со мной. Я уверен, что вы можете определить бесконечную линию только с нормалью или вектором, а затем определить пересекающиеся точки вдоль этой линии, чтобы создать отрезок линии как подмножество этой бесконечной линии. Существуют ли какие-либо современные движки, реализующие линии таким образом, или есть лучший способ сделать это?
Чтобы добавить дальнейшее усложнение (или простоту?), Википедия говорит, что в векторном пространстве конечные точки отрезка часто являются векторами, в частности, u -> u + v, что имеет большое значение при определении линии с помощью векторов в пространство, а не пересекает уже определенную бесконечную линию, но я не могу найти какой-либо смысл в этом, что заставляет меня задуматься о достоверности моих мыслей при применении этого в трехмерном движке, и еще больше усложняется при взгляде на движок Flash 3D , Papervision, я посмотрел на класс Ray, и он принимает 6 отдельных числовых значений в качестве параметров, а затем возвращает их как 2 различных Number3D, (эквивалент Papervision вектора), типы данных?!?
В любом случае, мне было бы очень интересно увидеть реализацию чего-то, что на самом деле использует ПРАВИЛЬНЫЙ способ реализации этих низкоуровневых частей согласно их истинным определениям. Любая помощь, источник или какой-нибудь хороший диалог о подобных вещах были бы великолепны. : D