import java.awt.geom.Rectangle2D;
import org.simantics.district.network.ModelledCRS;
+import org.simantics.maps.MapScalingTransform;
+import org.simantics.scenegraph.utils.GeometryUtils;
public class DistrictNetworkNodeUtils {
return transform;
}
+ public static double calculateScaleRecip(AffineTransform tr) {
+ int zoomLevel = MapScalingTransform.zoomLevel(tr);
+ 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;
+ }
}