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

求两点定义的2D向量垂直平移H距离的通用计算公式

2D向量垂直平移的通用解法

我来帮你搞定这个问题!其实核心是找到线段的垂直方向单位向量,再用它平移整个线段就行,下面一步步给你讲清楚:

1. 先算出原线段的方向分量

假设原线段是从点A(x₁,y₁)到点B(x₂,y₂),先计算两点的坐标差:

dx = x₂ - x₁
dy = y₂ - y₁

2. 排除特殊情况

如果dx和dy都是0(也就是A、B两点重合),平移就没有意义,直接返回原坐标即可。

3. 计算原线段的长度

这个长度用来把垂直方向的向量归一化成单位向量,保证平移距离准确:

len = sqrt(dx² + dy²)

4. 确定垂直平移的方向

原线段的垂直方向有两个(左侧和右侧),对应的单位垂直向量分别是:

  • 向左平移(逆时针垂直方向):
    v_perp_x = -dy / len
    v_perp_y = dx / len
    
  • 向右平移(顺时针垂直方向):
    v_perp_x = dy / len
    v_perp_y = -dx / len
    

这两个向量的长度都是1,乘以H之后就正好是咱们要平移的距离。

5. 算出平移后的新端点

把原端点的坐标分别加上「单位垂直向量 × H」就可以得到新坐标了:

x₁' = x₁ + v_perp_x * H
y₁' = y₁ + v_perp_y * H
x₂' = x₂ + v_perp_x * H
y₂' = y₂ + v_perp_y * H

用你的例子验证一下

原线段是(0,0)到(0,10):

  • dx = 0 - 0 = 0,dy = 10 - 0 = 10
  • len = √(0² + 10²) = 10
  • 选择向右平移的话,用顺时针垂直方向的向量:v_perp_x = 10/10 = 1,v_perp_y = -0/10 = 0
  • 平移H=5:
    A'的坐标是(0 + 1×5, 0 + 0×5) = (5,0)
    B'的坐标是(0 + 1×5, 10 + 0×5) = (5,10)
    完全和你给出的结果一致!

关于方位角的补充

如果你想用方位角(heading,从y轴顺时针到向量的角度)来计算,本质和上面的方法是等价的。比如原向量的heading是θ,那么顺时针转90°的垂直方向角度就是θ+90°,对应的向量分量就是(dy/len, -dx/len),和咱们之前的顺时针垂直向量完全一样,两种方法可以互换使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:37