diff --git a/src/Camera.cpp b/src/Camera.cpp index 1f7387a..3779045 100644 --- a/src/Camera.cpp +++ b/src/Camera.cpp @@ -44,7 +44,13 @@ void Camera::wheelEvent(QWheelEvent* event, const QVector3D& worldPos) { QPoint numDegrees = event->angleDelta() / 8; if (!numDegrees.isNull()) { - float zoomAmount = numDegrees.y() / 5.0f; + // Make zoom speed proportional to distance, with a minimum speed and a cap. + // The factors are chosen to match the original zoom speed at the default zoom level. + float dist = -m_zoom; + dist = qMin(dist, 200.0f); // Cap distance to avoid crazy fast zoom out. + float zoomFactor = dist * 0.009f + 0.02f; + float zoomAmount = numDegrees.y() * zoomFactor; + float oldZoom = m_zoom; float newZoom = oldZoom + zoomAmount;