4

基本上,瓷砖总结了这个问题 - 我想知道在 qt 类中是否有任何类似于 QRect 的构建,但用于 3D 对象(描述一个盒子而不是矩形)?

4

3 回答 3

3

基本上,瓷砖总结了这个问题 - 我想知道在 qt 类中是否有任何类似于 QRect 的构建,但用于 3D 对象(描述一个盒子而不是矩形)?

当然,有。

所需的类目前在 Qt3D 中,尽管它还没有在 Qt 5 中再次发布。

在 3D 世界模拟项目中,我一直是这门课程的活跃用户,它工作得很好。

QGLCube 类参考

如果您愿意这样下去,实际上甚至还有一个 3D 基础 QML 项目:

QML Item3D 元素

于 2014-01-12T00:06:23.473 回答
1

假设 3D 矩形是具有高度(Z 轴)的 2D 矩形,我将通过以下方式实现它(平行六面体?):

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用作第三维参数,因为 wordheight已经被 QRect 类保留。当然,你可以扩展这个类,但我想主要功能就在那里。

于 2013-11-22T20:49:41.113 回答
0

如果您正在寻找一个内置类,我不确定是否存在,但您可以用一点 3D 矢量知识构建自己的类。最难的函数可能是交集、平移或实现运算符,例如&, &=, |, |=, !=, <<, ==, 和>>

你可以考虑用它的尺寸和它在盒子中心的坐标来表示一个盒子。然后,您将有一个以原点 (x,y,z) 处的 3D 点为中心的具有特定宽度、高度和深度的框。

于 2013-11-22T19:11:12.357 回答