Получение грани куба

Я хочу рассчитать, какая грань на кубе была нажата. У меня есть мышь в 3D, и я могу рисовать вещи в 3D в том месте, где находится мышь.

Все, что мне нужно сделать сейчас, это вычислить, КАКОЙ грани куба касаются.

НАПРИМЕР. У меня есть функция, когда я передаю ей размер, положение и положение мыши, она возвращает лицо. Сверху, снизу, слева, справа, спереди, сзади.

Звучит просто, но у меня нет самого туманного.

Спасибо всем, SilentC


person Community    schedule 19.08.2009    source источник


Ответы (2)


не уверен, какой API вы используете, но OpenGL имеет выбор API, который делает это за вас

person oscarkuo    schedule 19.08.2009

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

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

person Daniel Brückner    schedule 19.08.2009
comment
Таким образом, линия, которая определена, будет идти от камеры к мыши, верно? - person ; 19.08.2009
comment
Кроме того, я предполагаю, что мне нужно компенсировать вращение, верно? - person ; 19.08.2009
comment
Линия от камеры через мышь до бесконечности пересекает одну или несколько граней (обычно две, если есть только один куб). Игнорируйте вырожденные случаи, такие как ребра, вершины и любые грани, параллельные линии. Возможно, стоит отсеять обращенные назад лица. Пользователю почти наверняка нужно ближайшее лицо, но вы можете предоставить возможность выбора среди лиц, чтобы пользователь мог выбрать скрытый объект, если он этого хочет. - person RBerteig; 20.08.2009