| | |
| | | List<Point2D.Double> boundary, // 边界点集合 |
| | | double scale, // 缩放比例 |
| | | double mergeThreshold, // 合并阈值 |
| | | Color pointColor) { // 点颜色 |
| | | Color pointColor, // 点颜色 |
| | | double diameterScale) { // 直径缩放因子 |
| | | if (boundary == null || boundary.size() < 2) { // 判断数据是否有效 |
| | | return; // 无效直接返回 |
| | | } |
| | |
| | | return; // 无效返回 |
| | | } |
| | | |
| | | double scaleFactor = Math.max(0.5, scale); // 防止过小缩放 |
| | | double markerDiameter = Math.max(1.0, (10.0 / scaleFactor) * 0.2); // 描点直径 |
| | | double scaleFactor = Math.max(0.5, scale); // 防止过小缩放 |
| | | // 边界线宽度:3 / Math.max(0.5, scale) |
| | | // 边界点直径 = 边界线宽度的2倍 |
| | | double boundaryLineWidth = 3.0 / scaleFactor; // 边界线宽度 |
| | | double markerDiameter = boundaryLineWidth * 2.0; // 描点直径(边界线宽度的2倍) |
| | | // 应用直径缩放因子 |
| | | if (diameterScale > 0.0 && Double.isFinite(diameterScale)) { |
| | | markerDiameter *= diameterScale; |
| | | } |
| | | double markerRadius = markerDiameter / 2.0; // 半径 |
| | | |
| | | for (int i = 0; i < effectiveCount; i++) { // 遍历有效点 |