Qt文档阅读笔记-Rotations Example相关

583 篇文章 127 订阅
196 篇文章 13 订阅

Rotations Example文档阅读笔记

 

使用这种方式,对y轴和z轴进行旋转。

QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, horizontalAngle * radiansToDegrees);
QQuaternion zRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, verticalAngle * radiansToDegrees);
QQuaternion totalRotation = yRotation * zRotation;
ptrToDataArray->setRotation(totalRotation);

使用这种方式加载obj素材:

m_magneticField->setMesh(QAbstract3DSeries::MeshUserDefined);
m_magneticField->setUserDefinedMesh(QStringLiteral(":/mesh/narrowarrow.obj"));

颜色梯度如下代码:

QLinearGradient fieldGradient(0, 0, 16, 1024);
fieldGradient.setColorAt(0.0, Qt::black);
fieldGradient.setColorAt(1.0, Qt::white);
m_magneticField->setBaseGradient(fieldGradient);
m_magneticField->setColorStyle(Q3DTheme::ColorStyleRangeGradient);

箭头的梯度函数0.0是黑色,1.0为白色

 

 

代码中的各个各个知识点解析:

Q3DScatter:用于渲染3D离散图的。还可以对内部的item进行旋转。

通过鼠标左右键进行。滚动滚轮进行放大和缩小(变化了场景)。

 

构造一个简单的Q3DScatter图

首先设置此属性:Qt::FramelessWindowHint

Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);

做了上面的工作后Q3DScatter 才能接收数据。使用QVector3D添加一条3D线。

QScatter3DSeries *series = new QScatter3DSeries;
QScatterDataArray data;
data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
series->dataProxy()->addItems(data);
scatter.addSeries(series);

最后展示下即可:

scatter.show();

完整的代码:

#include <QtDataVisualization>

using namespace QtDataVisualization;

int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);

    Q3DScatter scatter;
    scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);
    QScatter3DSeries *series = new QScatter3DSeries;
    QScatterDataArray data;
    data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
    series->dataProxy()->addItems(data);
    scatter.addSeries(series);
    scatter.show();

    return app.exec();
}

下面这个函数:

QWidget *QWidget::createWindowContainer

在第一个参数的QWindow里面创建一个QWidget

 

 

QScatter3DSeries:使用Q3DScatter构建连续的线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值