diff --git a/src/main/java/xyz/wbsite/jmacro/util/MousePathUtil.java b/src/main/java/xyz/wbsite/jmacro/util/MousePathUtil.java index b36d8ff..da6df8c 100644 --- a/src/main/java/xyz/wbsite/jmacro/util/MousePathUtil.java +++ b/src/main/java/xyz/wbsite/jmacro/util/MousePathUtil.java @@ -65,9 +65,16 @@ public class MousePathUtil { * @return 轨迹点集合 */ public static List generateBezierPath(int x0, int y0, int x1, int y1) { + // 计算两点间距离 + double distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)); + + // 根据距离动态调整控制点偏移范围,避免短距离时过度弯曲 + // 距离越短,偏移量越小,最短距离时偏移范围约为±10,最长距离时约为±100 + int maxOffset = (int) Math.min(100, Math.max(10, distance / 5)); + // 随机生成控制点,增加不确定性(避免总是直线) - int controlX = (x0 + x1) / 2 + random.nextInt(200) - 100; - int controlY = (y0 + y1) / 2 + random.nextInt(200) - 100; + int controlX = (x0 + x1) / 2 + random.nextInt(maxOffset * 2) - maxOffset; + int controlY = (y0 + y1) / 2 + random.nextInt(maxOffset * 2) - maxOffset; return generateBezierPath(x0, y0, controlX, controlY, x1, y1); }