Есть ли 3D аналогия для QRect в qt?

В основном, плитка подытоживает вопрос - мне интересно, есть ли какая-либо сборка в классе qt, аналогичная QRect, но для 3D-объекта (описать прямоугольник, а не прямоугольник)?

3 ответа

Решение

В основном, плитка подытоживает вопрос - мне интересно, есть ли какая-либо сборка в классе qt, аналогичная QRect, но для 3D-объекта (описать прямоугольник, а не прямоугольник)?

Конечно, есть.

Требуемый класс в настоящее время находится в Qt3D, хотя он еще не переиздан с Qt 5.

Я был активным пользователем этого класса в проектах по моделированию трехмерного мира, и он работает довольно хорошо.

Описание класса QGLCube

На самом деле есть даже элемент 3D базового QML, если вы хотите пойти по этому пути:

Элемент QML Item3D

Предполагая, что 3D-прямоугольник является 2D-прямоугольником с высотой (ось Z), я бы реализовал его (параллелепипед?) Следующим образом:

class Box: public QRect
{
public:
    Box(int x, int y, int width, int height, int length)
        :
            QRect(x, y, width, height),
            m_length(length)
    {}
    int length() const { return m_length; }

private:
    int m_length;
};

Таким образом, у вас есть форма, которая имеет ширину, высоту и длину. я использую length в качестве параметра третьего измерения, потому что слово height уже зарезервировано классом QRect. Конечно, вы можете расширить этот класс, но я думаю, что основная функциональность есть.

Если вы ищете встроенный класс, я не уверен, существует ли он, но вы могли бы создать свой собственный класс с небольшим знанием трехмерных векторов. Самыми сложными функциями могут быть операторы пересечения, перевода или реализации, такие как &, &=, |, |=, !=, <<, ==, а также >>,

Вы можете рассмотреть возможность представления блока по его размерам и координатам в центре блока. Тогда у вас будет прямоугольник определенной ширины, высоты и глубины, центрированный относительно трехмерной точки в начале координат (x,y,z).

Другие вопросы по тегам