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:
@@ -14,18 +14,18 @@ struct GridParams {
|
|||||||
int gridSize;
|
int gridSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
GridParams getGridParams(float zoom)
|
GridParams getGridParams(float distance)
|
||||||
{
|
{
|
||||||
if (zoom > 8.0f) {
|
if (distance > 80.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 {
|
|
||||||
return { 20.0f, 100.0f, 1000 };
|
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
|
} // namespace
|
||||||
@@ -72,7 +72,7 @@ void SketchGrid::paintGL(SketchPlane plane, QOpenGLShaderProgram* shaderProgram,
|
|||||||
|
|
||||||
void SketchGrid::drawGridLines(SketchPlane plane, QOpenGLShaderProgram* shaderProgram, int colorLoc)
|
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 float minorIncrement = params.minorIncrement;
|
||||||
const int gridSize = params.gridSize;
|
const int gridSize = params.gridSize;
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ void SketchGrid::paintAxisLabels(QPainter& painter, SketchGrid::SketchPlane plan
|
|||||||
painter.setPen(Qt::white);
|
painter.setPen(Qt::white);
|
||||||
painter.setFont(QFont("Arial", 10));
|
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 float majorIncrement = params.majorIncrement;
|
||||||
const int range = params.gridSize;
|
const int range = params.gridSize;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user