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

如何在Python中围绕中点缩放线段并获取对应坐标?

围绕线段中点缩放的实现方法

要实现线段围绕中点缩放且保持角度不变,核心思路是先把线段平移到原点(中点对齐原点),缩放后再平移回原中点位置,具体步骤和代码如下:

步骤拆解

  • 计算线段AB的中点M:中点坐标是两点坐标的平均值,即 M((x1+x2)/2, (y1+y2)/2)
  • 将A、B两点平移到以原点为中心:用A、B分别减去中点M的坐标,得到平移后的点A'、B'
  • 对平移后的点应用缩放因子:比如要把线段长度缩放为原来的k倍,就把A'、B'分别乘以k
  • 将缩放后的点平移回原中点:加上中点M的坐标,得到最终的缩放后线段端点A''、B''

代码实现(基于你的示例数据)

import numpy as np

# 原始线段端点
point_a = (189, 45)
point_b = (387, 614)
line = np.array([point_a, point_b])

# 1. 计算中点
midpoint = np.mean(line, axis=0)

# 2. 设置缩放因子(比如缩放为原来的1.5倍,小于1就是缩小)
scale_factor = 1.5

# 3. 平移到原点 -> 缩放 -> 平移回中点
# 先减去中点,平移到原点
translated = line - midpoint
# 缩放
scaled_translated = translated * scale_factor
# 平移回中点,得到新坐标
new_line = scaled_translated + midpoint

new_point_a = tuple(new_line[0].round().astype(int))  # 转成整数坐标(可选)
new_point_b = tuple(new_line[1].round().astype(int))

print(f"缩放后的A点坐标: {new_point_a}")
print(f"缩放后的B点坐标: {new_point_b}")

说明

  • 缩放因子scale_factor大于1时线段变长,小于1时变短,等于1时坐标不变
  • 如果不需要整数坐标,可以去掉.round().astype(int)部分,保留浮点数结果
  • 这个方法的本质是保持线段的方向向量不变,只改变向量的长度,同时确保中点位置不动

内容的提问来源于stack exchange,提问作者Matthew-Sharp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:31:44