From 0814c7dc002ac7f656891357b0fc0f6dd9307ac8 Mon Sep 17 00:00:00 2001 From: cqh963852 Date: Thu, 8 Oct 2026 13:31:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9B=B4=E7=BA=BF=20hover=20=E6=9C=9F?= =?UTF-8?q?=E6=9C=9B=EF=BC=9D=E7=9B=B4=E7=BA=BF=E5=8F=98=E6=96=9C=E7=BA=BF?= =?UTF-8?q?=E2=80=94=E2=80=94stepPath=20=E5=BE=AE=E9=AB=98=E5=B7=AE(<8px)?= =?UTF-8?q?=E5=88=86=E6=94=AF=E6=94=B9=20M=20L=20=E7=9B=B4=E8=BF=9E?= =?UTF-8?q?=EF=BC=88=E7=BB=93=E6=9E=84=E6=81=92=E5=AE=9A=E5=8F=AF=E5=B9=B3?= =?UTF-8?q?=E6=BB=91=E6=8F=92=E5=80=BC=EF=BC=89=EF=BC=8C=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E6=8A=98=E5=BC=AF=EF=BC=9B=E6=AD=A5=E8=BF=9B=E5=88=86=E6=94=AF?= =?UTF-8?q?=E4=B8=8D=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tutorial/src/components/RouteLine.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/tutorial/src/components/RouteLine.tsx b/apps/tutorial/src/components/RouteLine.tsx index 177f3a4..35df446 100644 --- a/apps/tutorial/src/components/RouteLine.tsx +++ b/apps/tutorial/src/components/RouteLine.tsx @@ -16,12 +16,13 @@ export interface LaneNode { y: number // 卡中线 y } -/* 水平出发 → 双弯直角步进 → 水平到达;同 y 时直线。 - * 半径自适应:垂直空间 |dy| 或水平空间不足 2r 时收缩(如 hover 微浮 dy=3), - * 否则两段弧会交叠倒置,在贴卡处扭曲成折返。 */ +/* 水平出发 → 双弯直角步进 → 水平到达。 + * 微高差(<8px,含 hover 微浮 3px)=斜线直连:M L 结构恒定, + * 静置几何上是水平线,hover 时 CSS d 平滑插值成斜线(不折弯、不扭曲)。 + * 正常步进半径自适应:垂直/水平空间不足 2r 时收缩,防两段弧交叠倒置。 */ function stepPath(x0: number, y0: number, x1: number, y1: number, r = 8): string { const dyAbs = Math.abs(y1 - y0) - if (dyAbs < 1) return `M ${x0} ${y0} H ${x1}` + if (dyAbs < 8) return `M ${x0} ${y0} L ${x1} ${y1}` const rr = Math.max(0.5, Math.min(r, dyAbs / 2, (x1 - x0) / 3)) const down = y1 > y0 const sweep1 = down ? 1 : 0