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

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

3

Решение

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

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

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

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

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

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

Элемент QML Item3D

3

Другие решения

Предполагая, что 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.
Конечно, вы можете расширить этот класс, но я думаю, что основная функциональность есть.

1

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

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

0
По вопросам рекламы [email protected]