2017-06-02 970 views
0

我在Qt中编写了一个程序,它通过使用Q3DScatter可视化处理后的点云(3D点)。 现在我想添加不同颜色的计算关键点。 这可能吗? Anyboy有没有一些经验? 下面您可以看到代码的一部分,点云被添加到数据数组中。Q3DScatter - >如何用不同颜色的点添加点云

QScatterDataArray * dataArray = new QScatterDataArray; 
dataArray->resize(vector_seg_x->size()); 
QScatterDataItem * ptrToDataArray = &dataArray->first(); 

for(int i = 0; i < vector_seg_x->size();i++){ 

    ptrToDataArray->setPosition(QVector3D(
            (double)(iter_seg_x[i]), 
            (double)(iter_seg_y[i]), 
            (double)(iter_seg_z[i]))); 
    ptrToDataArray++; 

} 

m_graph_seg->seriesList().at(0)->dataProxy()->resetArray(dataArray); 

回答

0

只能设置一个颜色/渐变为一个整点列表:

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

scatter.addSeries(new QScatter3DSeries); 
scatter.addSeries(new QScatter3DSeries); 

{ 
    QScatterDataArray *data = new QScatterDataArray; 
    *data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f); 

    scatter.seriesList().at(0)->dataProxy()->resetArray(data); 

    QLinearGradient linearGrad(QPointF(100, 100), QPointF(200, 200)); 
    linearGrad.setColorAt(0, Qt::blue); 
    linearGrad.setColorAt(1, Qt::red); 

    scatter.seriesList().at(0)->setBaseGradient(linearGrad); 
    scatter.seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyle::ColorStyleObjectGradient); 
} 

{ 
    QScatterDataArray *data = new QScatterDataArray; 
    *data << QVector3D(0.f, 0.f, 0.f); 

    scatter.seriesList().at(1)->dataProxy()->resetArray(data); 
    scatter.seriesList().at(1)->setBaseColor(Qt::green); 
} 

scatter.show(); 
相关问题