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

如何用Python计算圆直径两端点间的圆弧中点

圆弧中点计算方法(直径两端点场景)

已知圆的半径、圆心、直径两端点p1和p2,求圆弧中点p3的步骤如下:

核心思路

因为p1和p2是直径端点,圆心O是p1p2的中点(也可直接使用给定的圆心)。圆弧中点位于垂直于p1p2的直线上,且到圆心的距离等于半径。只需计算垂直于向量$\overrightarrow{Op1}$的方向向量,再结合圆心坐标就能得到目标点p3。

具体步骤

  1. 确定圆心O的坐标:若未直接给定,可通过p1和p2的坐标平均得到,公式为$O_x=(p1_x+p2_x)/2$,$O_y=(p1_y+p2_y)/2$
  2. 计算从圆心指向p1的向量:$(p1_x - O_x, p1_y - O_y)$
  3. 将该向量旋转90度:顺时针旋转时$(x,y)$变为$(y,-x)$;逆时针旋转时变为$(-y,x)$,可根据需求选择对应方向
  4. 旋转后的向量长度等于半径,直接加上圆心坐标即可得到p3

修正后的Python代码

import math

points = [[100, 200], [250, 350]]
# 计算圆心(已知圆心可直接替换此处)
center = ((points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2)
radius = math.sqrt(((points[1][0] - points[0][0])**2) + ((points[1][1] - points[0][1])**2)) / 2

# 圆心到p1的向量
vec_x = points[0][0] - center[0]
vec_y = points[0][1] - center[1]

# 逆时针旋转90度(要另一段圆弧中点则改为 (vec_y, -vec_x))
rotated_vec_x = -vec_y
rotated_vec_y = vec_x

# 计算圆弧中点p3
p3 = (center[0] + rotated_vec_x, center[1] + rotated_vec_y)

# 按需转为整数输出
print(int(p3[0]), int(p3[1]))

补充说明

  • 旋转方向决定了得到的是哪一段圆弧的中点,若结果不符合预期,切换旋转公式即可
  • 若已知圆心坐标,直接替换代码中的center变量即可,无需通过p1和p2计算

内容的提问来源于stack exchange,提问作者Baćko Kaczor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:01:06