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;
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user