| | |
| | | // 过滤有效点 |
| | | List<Point2D.Double> validPoints = new java.util.ArrayList<>(); |
| | | for (Point2D.Double point : previewPoints) { |
| | | if (point != null && Double.isFinite(point.x) && Double.isFinite(point.y)) { |
| | | if (point != null && isFinite(point.x) && isFinite(point.y)) { |
| | | validPoints.add(point); |
| | | } |
| | | } |
| | |
| | | |
| | | double effectiveScale = Math.max(0.01d, scale); |
| | | double markerSize = cachedMarkerPixelDiameter / effectiveScale; |
| | | double normalizedScale = Double.isFinite(diameterScale) && diameterScale > 0.0d ? diameterScale : 1.0d; |
| | | double normalizedScale = isFinite(diameterScale) && diameterScale > 0.0d ? diameterScale : 1.0d; |
| | | markerSize *= normalizedScale; |
| | | double markerRadius = markerSize / 2.0d; |
| | | |
| | | for (Point2D.Double point : previewPoints) { |
| | | if (point == null || !Double.isFinite(point.x) || !Double.isFinite(point.y)) { |
| | | if (point == null || !isFinite(point.x) || !isFinite(point.y)) { |
| | | continue; |
| | | } |
| | | Shape marker = new Ellipse2D.Double(point.x - markerRadius, point.y - markerRadius, markerSize, markerSize); |
| | |
| | | g2d.setStroke(originalStroke); |
| | | g2d.setColor(originalColor); |
| | | } |
| | | |
| | | /** |
| | | * 检查double值是否有限(不是NaN或无穷大) |
| | | * 兼容低版本Java |
| | | */ |
| | | private static boolean isFinite(double value) { |
| | | return !Double.isNaN(value) && !Double.isInfinite(value); |
| | | } |
| | | } |