X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fnodes%2FDistrictNetworkNodeUtils.java;h=c9e4a00e19b3be532b23f2d4641590e953bb9524;hb=00780eaab266d26ec16d7bbb9e882a23ef1807d0;hp=c48693ac4470b94122bf6f47c13a87a7031a9b01;hpb=835710a4f22ec2d91c287295fb176a0af62d1186;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java index c48693ac..c9e4a00e 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java @@ -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; } }