fix: Correct dynamic grid scaling based on camera distance

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-17 12:34:54 -07:00
parent 1779725d53
commit e8afc0a4b4

View File

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