From e8afc0a4b4ad5ee0da9358f224b629342cacb3ab Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Tue, 17 Feb 2026 12:34:54 -0700 Subject: [PATCH] fix: Correct dynamic grid scaling based on camera distance Co-authored-by: aider (gemini/gemini-2.5-pro) --- src/SketchGrid.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/SketchGrid.cpp b/src/SketchGrid.cpp index e25558c..98f52ca 100644 --- a/src/SketchGrid.cpp +++ b/src/SketchGrid.cpp @@ -14,18 +14,18 @@ struct GridParams { int gridSize; }; -GridParams getGridParams(float zoom) +GridParams getGridParams(float distance) { - if (zoom > 8.0f) { - return { 0.2f, 1.0f, 10 }; - } else if (zoom > 2.0f) { - return { 1.0f, 5.0f, 50 }; - } else if (zoom > 0.8f) { - return { 5.0f, 25.0f, 250 }; - } else if (zoom > 0.4f) { - return { 10.0f, 50.0f, 500 }; - } else { + if (distance > 80.0f) { return { 20.0f, 100.0f, 1000 }; + } else if (distance > 40.0f) { + return { 10.0f, 50.0f, 500 }; + } else if (distance > 20.0f) { + return { 5.0f, 25.0f, 250 }; + } else if (distance > 8.0f) { + return { 1.0f, 5.0f, 50 }; + } else { // zoomed in + return { 0.2f, 1.0f, 10 }; } } } // namespace @@ -72,7 +72,7 @@ void SketchGrid::paintGL(SketchPlane plane, QOpenGLShaderProgram* shaderProgram, void SketchGrid::drawGridLines(SketchPlane plane, QOpenGLShaderProgram* shaderProgram, int colorLoc) { - auto params = getGridParams(m_viewport->camera()->zoom()); + auto params = getGridParams(-m_viewport->camera()->zoom()); const float minorIncrement = params.minorIncrement; const int gridSize = params.gridSize; @@ -160,7 +160,7 @@ void SketchGrid::paintAxisLabels(QPainter& painter, SketchGrid::SketchPlane plan painter.setPen(Qt::white); painter.setFont(QFont("Arial", 10)); - auto params = getGridParams(m_viewport->camera()->zoom()); + auto params = getGridParams(-m_viewport->camera()->zoom()); const float majorIncrement = params.majorIncrement; const int range = params.gridSize;