2017-06-02 2 views
0

Ich habe ein Programm in Qt geschrieben, das eine verarbeitete Punktwolke (3D-Punkte) mit Hilfe von Q3DScatter visualisiert. Jetzt möchte ich berechnete Keypoints mit einer anderen Farbe hinzufügen. Ist das möglich? Hat anyboy einige Erfahrungen damit? Unten sehen Sie den Teil des Codes, in dem die Punktwolke zum Datenfeld hinzugefügt wird.Q3DScatter -> Wie man einen Punkt mit einer anderen Farbe zu einer Punktwolke hinzufügt

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); 

Antwort

0

Sie können nur eine Farbe/Farbverlauf für eine ganze Punktliste gesetzt:

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(); 
Verwandte Themen