]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java
Open SCL script output console on demand for context menu commands.
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / DistrictNetworkNodeUtils.java
index c48693ac4470b94122bf6f47c13a87a7031a9b01..c9e4a00e19b3be532b23f2d4641590e953bb9524 100644 (file)
@@ -39,9 +39,20 @@ public class DistrictNetworkNodeUtils {
 
     public static double calculateScaleRecip(AffineTransform tr) {
         int zoomLevel = MapScalingTransform.zoomLevel(tr);
-        double scale = GeometryUtils.getScale(tr);
-        double sqrt = Math.sqrt(scale / zoomLevel);
-        double viewScaleRecip = (sqrt / zoomLevel);
-        return viewScaleRecip;
+        double t;
+        if (zoomLevel > 15) {
+            int d = zoomLevel - 15; // stop zooming vertices when zoom level > 15
+            t = 1.0 / d / (getScale(tr) * Math.sqrt(zoomLevel));
+        } else {
+            t = 1.0 / (getScale(tr) * Math.sqrt(zoomLevel));
+        }
+        return t;
+    }
+
+    static double getScale(AffineTransform tr) {
+        double scale;
+        scale = GeometryUtils.getScale(tr);
+        scale = Math.max(4096, Math.min(scale, 32768));
+        return scale;
     }
 }