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

已知圆心S、半径r和角度alpha,求过圆心直线与圆的交点坐标

过圆心的直线与圆的交点坐标求解

问题描述

已知圆心坐标为 ( S(center_x, center_y) ),圆的半径为 ( r ),一条过圆心的直线由角度 ( \alpha )(与x轴正方向的夹角)定义,求该直线与圆的两个交点坐标。

解法说明

常规通用圆线交点方法(如MathWorld提及的方案)在此场景下冗余复杂,由于该直线必然经过圆心,可直接借助极坐标转直角坐标的思路简化计算:从圆心出发,沿角度 ( \alpha ) 方向延伸半径长度 ( r ) 得到第一个交点;沿相反方向(即 ( \alpha + \pi ) 角度)延伸半径长度 ( r ) 得到第二个交点。

通用公式

设圆心坐标为 ( (center_x, center_y) ),半径为 ( r ),直线角度为 ( \alpha ),则两个交点坐标为:

  • 交点1:
    ( x_1 = center_x + r \cdot \cos(\alpha) )
    ( y_1 = center_y + r \cdot \sin(\alpha) )
  • 交点2:
    ( x_2 = center_x - r \cdot \cos(\alpha) )
    ( y_2 = center_y - r \cdot \sin(\alpha) )

代码示例(Python)

import math

def get_circle_intersections(center_x, center_y, radius, alpha):
    cos_val = math.cos(alpha)
    sin_val = math.sin(alpha)
    p1_x = center_x + radius * cos_val
    p1_y = center_y + radius * sin_val
    p2_x = center_x - radius * cos_val
    p2_y = center_y - radius * sin_val
    return (p1_x, p1_y), (p2_x, p2_y)

# 示例调用
center = (2, 4)
r = 5
angle_rad = math.pi / 4  # 45度(弧度制)
point1, point2 = get_circle_intersections(*center, r, angle_rad)
print(f"交点1: ({point1[0]:.2f}, {point1[1]:.2f})")
print(f"交点2: ({point2[0]:.2f}, {point2[1]:.2f})")

注:角度 ( \alpha ) 的单位需与所用编程语言的三角函数要求一致,若输入为角度值,需先转换为弧度(如Python中用 math.radians(angle_deg) 完成转换)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:10:12