2017-06-02 41 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(); 
相關問題