создание ограничивающего прямоугольника вокруг объектов openGL - PullRequest
2 голосов
/ 27 июля 2010

Я создал квадрат openGL примерно так ...

            final float array1[] = new float[] {
            //Front face
            lx, ly, hz,
            lx, hy, hz,
            hx, ly, hz,
            hx, hy, hz
    };

У меня также есть Луч.Теперь я хотел бы поставить ограничивающие рамки вокруг каждого нарисованного квадрата, чтобы я мог проверить, пересекаются ли они.Как бы я поступил так?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Вам не нужно ставить ограничивающие рамки вокруг квадратов.Фактически, в случае квадрата ограничивающий прямоугольник равен квадрату.

Ограничивающий прямоугольник - это просто концепция: геометрическая оболочка, внутри которой концептуально может существовать некоторая другая (фактическая) геометриясуществовать.Идея состоит в том, что намного проще (и быстрее) проверить по 4 углам прямоугольника (для столкновения и т. Д.), Чем по каждой вершине сложного многоугольного объекта.

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

1 голос
/ 27 июля 2010

OpenGL не имеет понятия ограничивающего прямоугольника, это просто математическое понятие, связанное с обнаружением столкновений.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...