mirror of https://github.com/qt/qtdatavis3d.git
Fixes to galaxy.
Change-Id: I41a666177526db8563eee5799dee57e9994800dc Signed-off-by: Mika Salmela <mika.salmela@theqtcompany.com>
This commit is contained in:
parent
b439a667c0
commit
b492b27371
|
|
@ -69,11 +69,7 @@ GalaxyData::GalaxyData(Q3DScatter *scatter,
|
|||
this, &GalaxyData::handleFpsChange);
|
||||
m_graph->setMeasureFps(true);
|
||||
|
||||
createNormalSeries();
|
||||
|
||||
m_dataArray = new QScatterDataArray;
|
||||
m_dataArray->resize(numOfStars);
|
||||
|
||||
createSeries();
|
||||
createGalaxy();
|
||||
}
|
||||
|
||||
|
|
@ -154,17 +150,25 @@ void GalaxyData::createGalaxy()
|
|||
createFilteredView();
|
||||
}
|
||||
|
||||
void GalaxyData::createNormalSeries()
|
||||
void GalaxyData::createSeries()
|
||||
{
|
||||
QScatterDataProxy *proxy = new QScatterDataProxy;
|
||||
QScatter3DSeries *series = new QScatter3DSeries(proxy);
|
||||
series->setMesh(QAbstract3DSeries::MeshPoint);
|
||||
m_graph->addSeries(series);
|
||||
QScatterDataProxy *proxyNormal = new QScatterDataProxy;
|
||||
m_normalSeries = new QScatter3DSeries(proxyNormal);
|
||||
m_normalSeries->setMesh(QAbstract3DSeries::MeshPoint);
|
||||
m_graph->addSeries(m_normalSeries);
|
||||
|
||||
QScatterDataProxy *proxyFiltered = new QScatterDataProxy;
|
||||
m_filteredSeries = new QScatter3DSeries(proxyFiltered);
|
||||
m_filteredSeries->setMesh(QAbstract3DSeries::MeshPoint);
|
||||
m_graph->addSeries(m_filteredSeries);
|
||||
|
||||
}
|
||||
|
||||
void GalaxyData::createNormalDataView()
|
||||
{
|
||||
QScatterDataItem *ptrToDataArray = &m_dataArray->first();
|
||||
QScatterDataArray *dataArray = new QScatterDataArray;
|
||||
dataArray->resize(numOfStars);
|
||||
QScatterDataItem *ptrToDataArray = &dataArray->first();
|
||||
|
||||
for (uint i = 0; i < numOfStars; i++) {
|
||||
ptrToDataArray->setPosition(QVector3D(m_pStars[i].m_pos.x(),
|
||||
|
|
@ -173,8 +177,8 @@ void GalaxyData::createNormalDataView()
|
|||
ptrToDataArray++;
|
||||
}
|
||||
|
||||
m_graph->seriesList().at(0)->dataProxy()->resetArray(m_dataArray);
|
||||
m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshPoint);
|
||||
m_normalSeries->dataProxy()->resetArray(dataArray);
|
||||
m_normalSeries->setMesh(QAbstract3DSeries::MeshPoint);
|
||||
}
|
||||
|
||||
void GalaxyData::createFilteredView()
|
||||
|
|
@ -203,9 +207,10 @@ void GalaxyData::createFilteredView()
|
|||
nActiveCell++;
|
||||
}
|
||||
|
||||
m_dataArray->clear();
|
||||
m_dataArray->resize(nActiveCell);
|
||||
QScatterDataItem *ptrToDataArray = &m_dataArray->first();
|
||||
|
||||
QScatterDataArray *dataArray = new QScatterDataArray;
|
||||
dataArray->resize(nActiveCell);
|
||||
QScatterDataItem *ptrToDataArray = &dataArray->first();
|
||||
|
||||
for (int y = 0; y < steps; y++) {
|
||||
for (int x = 0; x < steps; x++) {
|
||||
|
|
@ -218,9 +223,9 @@ void GalaxyData::createFilteredView()
|
|||
}
|
||||
}
|
||||
|
||||
m_graph->seriesList().at(0)->dataProxy()->resetArray(m_dataArray);
|
||||
m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCube);
|
||||
m_graph->seriesList().at(0)->setItemSize(0.1f);
|
||||
m_filteredSeries->dataProxy()->resetArray(dataArray);
|
||||
m_filteredSeries->setMesh(QAbstract3DSeries::MeshCube);
|
||||
m_filteredSeries->setItemSize(0.1f);
|
||||
|
||||
m_graph->axisY()->setRange(0.0f, float(max + 1));
|
||||
|
||||
|
|
@ -297,24 +302,40 @@ void GalaxyData::setFilteredEnabled(bool enabled)
|
|||
if (enabled) {
|
||||
QLinearGradient gr(0, 0, 1, 100);
|
||||
gr.setColorAt(0.0, Qt::white);
|
||||
gr.setColorAt(0.05, Qt::green);
|
||||
gr.setColorAt(0.04, Qt::green);
|
||||
gr.setColorAt(0.1, Qt::darkGreen);
|
||||
gr.setColorAt(1.0, Qt::red);
|
||||
|
||||
m_graph->seriesList().at(0)->setBaseGradient(gr);
|
||||
m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
|
||||
m_filteredSeries->setBaseGradient(gr);
|
||||
m_filteredSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
|
||||
|
||||
m_normalSeries->setVisible(false);
|
||||
|
||||
createFilteredView();
|
||||
|
||||
m_filteredSeries->setVisible(true);
|
||||
} else {
|
||||
m_dataArray->clear();
|
||||
m_dataArray->resize(numOfStars);
|
||||
m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleUniform);
|
||||
m_normalSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
|
||||
m_graph->axisY()->setRange(-1.0f, 1.0f);
|
||||
m_graph->seriesList().at(0)->setItemSize(0.0f);
|
||||
m_normalSeries->setItemSize(0.0f);
|
||||
|
||||
m_filteredSeries->setVisible(false);
|
||||
|
||||
createNormalDataView();
|
||||
|
||||
m_normalSeries->setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GalaxyData::setStaticEnabled(bool enabled)
|
||||
{
|
||||
if (enabled)
|
||||
m_graph->setOptimizationHints(QAbstract3DGraph::OptimizationStatic);
|
||||
else
|
||||
m_graph->setOptimizationHints(QAbstract3DGraph::OptimizationDefault);
|
||||
}
|
||||
|
||||
void GalaxyData::resetValues()
|
||||
{
|
||||
m_radiusGalaxySlider->setValue(15000);
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ public:
|
|||
void eccentricityOuterChanged(int value);
|
||||
void resetValues();
|
||||
void setFilteredEnabled(bool enabled);
|
||||
void setStaticEnabled(bool enabled);
|
||||
inline void setSliders(QSlider *rg,
|
||||
QSlider *rc,
|
||||
QSlider *ao,
|
||||
|
|
@ -70,12 +71,13 @@ private:
|
|||
void checkMinMax(const Star &star);
|
||||
void createNormalDataView();
|
||||
void createFilteredView();
|
||||
void createNormalSeries();
|
||||
void createSeries();
|
||||
qreal value;
|
||||
|
||||
private:
|
||||
Q3DScatter *m_graph;
|
||||
QScatterDataArray *m_dataArray;
|
||||
QScatter3DSeries *m_normalSeries;
|
||||
QScatter3DSeries *m_filteredSeries;
|
||||
Star *m_pStars;
|
||||
|
||||
qreal m_elEx1; // Excentricity of the innermost ellipse
|
||||
|
|
|
|||
|
|
@ -83,6 +83,10 @@ int main(int argc, char **argv)
|
|||
eccentricityOuterSlider->setValue(90);
|
||||
eccentricityOuterSlider->setEnabled(true);
|
||||
|
||||
QCheckBox *staticCheckBox = new QCheckBox(widget);
|
||||
staticCheckBox->setText(QStringLiteral("Static"));
|
||||
staticCheckBox->setChecked(false);
|
||||
|
||||
QPushButton *resetButton = new QPushButton(widget);
|
||||
resetButton->setText(QStringLiteral("Reset values"));
|
||||
|
||||
|
|
@ -102,6 +106,7 @@ int main(int argc, char **argv)
|
|||
vLayout->addWidget(eccentricityInnerSlider);
|
||||
vLayout->addWidget(new QLabel(QStringLiteral("Eccentricity outer")));
|
||||
vLayout->addWidget(eccentricityOuterSlider);
|
||||
vLayout->addWidget(staticCheckBox);
|
||||
vLayout->addWidget(resetButton);
|
||||
vLayout->addWidget(filteredCheckBox);
|
||||
vLayout->addWidget(fpsLabel);
|
||||
|
|
@ -122,6 +127,8 @@ int main(int argc, char **argv)
|
|||
modifier, &GalaxyData::resetValues);
|
||||
QObject::connect(filteredCheckBox, &QCheckBox::stateChanged,
|
||||
modifier, &GalaxyData::setFilteredEnabled);
|
||||
QObject::connect(staticCheckBox, &QCheckBox::stateChanged,
|
||||
modifier, &GalaxyData::setStaticEnabled);
|
||||
|
||||
modifier->setSliders(radiusGalaxySlider, radiusCoreSlider, angleOffsetSlider,
|
||||
eccentricityInnerSlider, eccentricityOuterSlider);
|
||||
|
|
|
|||
Loading…
Reference in New Issue