summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/scatterchart/main.cpp2
-rw-r--r--src/datavis3d/engine/scatter3drenderer.cpp18
2 files changed, 14 insertions, 6 deletions
diff --git a/examples/scatterchart/main.cpp b/examples/scatterchart/main.cpp
index 56e7f457..c94e1cd6 100644
--- a/examples/scatterchart/main.cpp
+++ b/examples/scatterchart/main.cpp
@@ -111,7 +111,7 @@ int main(int argc, char **argv)
shadowQuality->addItem(QStringLiteral("Low"));
shadowQuality->addItem(QStringLiteral("Medium"));
shadowQuality->addItem(QStringLiteral("High"));
- shadowQuality->setCurrentIndex(1);
+ shadowQuality->setCurrentIndex(3);
QFontComboBox *fontList = new QFontComboBox(widget);
diff --git a/src/datavis3d/engine/scatter3drenderer.cpp b/src/datavis3d/engine/scatter3drenderer.cpp
index 6dcca198..cf961bfb 100644
--- a/src/datavis3d/engine/scatter3drenderer.cpp
+++ b/src/datavis3d/engine/scatter3drenderer.cpp
@@ -138,16 +138,24 @@ void Scatter3DRenderer::initializeOpenGL()
void Scatter3DRenderer::updateDataModel(QScatterDataProxy *dataProxy)
{
+ int actualDataSize = 0;
const QScatterDataArray &dataArray = *dataProxy->array();
calculateSceneScalingFactors();
int dataSize = dataArray.size();
m_renderItemArray.resize(dataSize);
for (int i = 0; i < dataSize ; i++) {
- m_renderItemArray[i].setPosition(dataArray.at(i).position());
- calculateTranslation(m_renderItemArray[i]);
- m_renderItemArray[i].setRenderer(this);
+ QVector3D dotPos = dataArray.at(i).position();
+ if ((dotPos.x() >= m_axisCacheX.min() && dotPos.x() <= m_axisCacheX.max())
+ && (dotPos.y() >= m_axisCacheY.min() && dotPos.y() <= m_axisCacheY.max())
+ && (dotPos.z() >= m_axisCacheZ.min() && dotPos.z() <= m_axisCacheZ.max())) {
+ m_renderItemArray[actualDataSize].setPosition(dotPos);
+ calculateTranslation(m_renderItemArray[actualDataSize]);
+ m_renderItemArray[actualDataSize].setRenderer(this);
+ actualDataSize++;
+ }
}
- m_dotSizeScale = (GLfloat)qBound(0.01, (2.0 / qSqrt((qreal)dataSize)), 0.1);
+ m_renderItemArray.resize(actualDataSize);
+ m_dotSizeScale = (GLfloat)qBound(0.01, (2.0 / qSqrt((qreal)actualDataSize)), 0.1);
m_selectedItem = 0;
Abstract3DRenderer::updateDataModel(dataProxy);
@@ -1381,7 +1389,7 @@ void Scatter3DRenderer::calculateTranslation(ScatterRenderItem &item)
void Scatter3DRenderer::calculateSceneScalingFactors()
{
- m_heightNormalizer = (GLfloat)m_axisCacheY.max();
+ m_heightNormalizer = (GLfloat)qMax(qAbs(m_axisCacheY.max()), qAbs(m_axisCacheY.min()));
// TODO: Get rid of m_areaSize and use m_axisCaches directly?
m_areaSize.setHeight(m_axisCacheZ.max());
m_areaSize.setWidth(m_axisCacheX.max());