Очень общий вопрос о реализации векторов, вершин, ребер, лучей, линий и отрезков - PullRequest
1 голос
/ 14 февраля 2010

Это всего лишь БОЛЬШОЙ обобщенный вопрос, касающийся лучей (и / или отрезков, ребер и т. Д.) И их места в программном 3D-движке, который выполняет / не выполняет операции трассировки лучей. Я изучаю основы, и я первый, кто признает, что мало что знаю об этом, поэтому будьте добры. :)

ОК, я удивляюсь, почему параметризованная линия не используется вместо луча (или они ??). Я просмотрел несколько файлов cpp по всему Интернету и увидел, что несколько ресурсов определяют объект Ray.cpp, один из которых содержит вершину и вектор, а другой использует точку и вектор. Я также новичок в математике за линиями и отрезками, так что, пожалуйста, держись со мной. Я уверен, что вы можете определить бесконечную линию только с нормалью или вектором, а затем определить пересекающиеся точки вдоль этой линии, чтобы создать отрезок линии как подмножество этой бесконечной линии. Существуют ли какие-либо современные движки, реализующие линии таким образом, или есть лучший способ сделать это?

Чтобы добавить дальнейшее усложнение (или простоту?), Википедия говорит, что в векторном пространстве конечные точки отрезка часто являются векторами, в частности, u -> u + v, что имеет большое значение при определении линии с помощью векторов в пространство, а не пересекает уже определенную бесконечную линию, но я не могу найти какой-либо смысл в этом, что заставляет меня задуматься о достоверности моих мыслей при применении этого в трехмерном движке, и еще больше усложняется при взгляде на движок Flash 3D , Papervision, я посмотрел на класс Ray, и он принимает 6 отдельных числовых значений в качестве параметров, а затем возвращает их как 2 различных Number3D, (эквивалент Papervision вектора), типы данных?!?

В любом случае, мне было бы очень интересно увидеть реализацию чего-то, что на самом деле использует ПРАВИЛЬНЫЙ способ реализации этих низкоуровневых частей согласно их истинным определениям. Любая помощь, источник или какой-нибудь хороший диалог о подобных вещах были бы великолепны. : D

1 Ответ

1 голос
/ 14 февраля 2010

Я почти уверен, что вы можете определить бесконечную линию только с нормалью или вектором

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

Линии, как правило, определяются в форме «Начало + Направление» * K, где K будет принимать любое действительное значение, потому что эта форма проста для других математических операций. Вы также можете использовать две точки на линии.

...