You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保持方向不变按比例缩短线段的坐标距离?

保持线段方向不变的按比例缩减实现

核心数学逻辑

要维持线段原有方向,必须基于线段的方向向量做比例缩放,不能单独修改x/y坐标或直接减去固定值:

  • 线段的方向向量为:dx = x2 - x1,dy = y2 - y1
  • 设目标保留长度比例为 k(比如保留90%长度则k=0.9,即缩减10%),缩放后的向量为 (k*dx, k*dy)

两种缩减场景的代码实现

1. 保留起点,从终点向起点缩减

新终点坐标通过起点叠加缩放后的向量计算:

<!-- 原线段(100%长度) -->
<line x1="x1" y1="y1" x2="x2" y2="y2" stroke="gray" />

<!-- 缩减为原长度90%的线段 -->
<line
  x1="x1"
  y1="y1"
  x2="x1 + 0.9*(x2 - x1)"
  y2="y1 + 0.9*(y2 - y1)"
  stroke="purple"
/>

2. 保留终点,从起点向终点缩减

新起点坐标通过终点反向叠加缩放后的向量计算:

<!-- 原线段(100%长度) -->
<line x1="x1" y1="y1" x2="x2" y2="y2" stroke="gray" />

<!-- 缩减为原长度90%的线段 -->
<line
  x1="x2 - 0.9*(x2 - x1)"
  y1="y2 - 0.9*(y2 - y1)"
  x2="x2"
  y2="y2"
  stroke="blue"
/>

错误做法的问题说明

  • 直接减去固定值:比如x2 = x2 - 10、y2 = y2 -10,会导致x/y方向的缩减量与原向量比例不匹配,直接改变线段斜率(方向)
  • 单独修改x或y的比例:比如仅对x坐标做比例调整,会破坏原向量的x/y比值,同样改变线段方向

内容的提问来源于stack exchange,提问作者ohboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:46:08