Qt中是否有QRect的3D类比?

4

基本上,这个标题概括了这个问题 - 我想知道是否有Qt内置类似于QRect的3D对象构建类(描述一个盒子而不是矩形)?


这是用OpenGL进行实时图形处理吗?如果是,我不建议使用Qt的内置类来构建3D对象。 - Cameron Tinker
不,它纯粹是为了在内部定义3D区域,传递它并添加/减去这样的区域。应用程序是控制台,并处理在3D区域内生成随机点等操作 - 不会尝试在屏幕上渲染任何内容。 - Ilya Kobelevskiy
@IlyaKobelevskiy:你看过Qt3D吗? - László Papp
3个回答

3
基本上,这个问题的标题已经说明了一切 - 我想知道是否有任何内置的Qt类似于QRect,但是用于三维对象(描述一个盒子而不是矩形)?
当然有。
所需的类目前在Qt3D中,尽管它还没有再次发布到Qt 5中。
我一直在3D世界仿真项目中积极使用这个类,它的效果还可以。 QGLCube 类参考 如果您愿意使用QML,实际上甚至有一个暴露出来的3D基本 QML item: QML Item3D 元素

谢谢,看起来很有趣,我之前不知道Qt3D! - Ilya Kobelevskiy

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作为第三维参数,因为单词height已经被QRect类保留。 当然,您可以扩展此类,但我想主要功能已经存在。

0

如果你正在寻找内置类,我不确定是否存在这样的类,但是你可以通过一些三维向量知识构建自己的类。最难的函数可能是交点、平移或实现运算符,例如&&=||=!=<<==>>

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


是的,那正是我想避免的——自己实现它 :(. 如果还有其他的解决方案出现,我会再等一会儿,然后接受这个答案... - Ilya Kobelevskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接