По сути, плитка подытоживает вопрос: мне интересно, есть ли какая-либо сборка в классе qt, аналогичная QRect, но для 3D-объекта (описать прямоугольник, а не прямоугольник)?
По сути, плитка подытоживает вопрос: мне интересно, есть ли какая-либо сборка в классе qt, аналогичная QRect, но для 3D-объекта (описать прямоугольник, а не прямоугольник)?
Конечно, есть.
Требуемый класс в настоящее время находится в Qt3D, хотя он еще не переиздан с Qt 5.
Я был активным пользователем этого класса в проектах по моделированию трехмерного мира, и он работает довольно хорошо.
На самом деле есть даже элемент 3D базового QML, если вы хотите пойти по этому пути:
Предполагая, что 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).