Python已知圆的圆心和半径以及圆外一点,求该点到圆的切点(不废话上完整程序)

以下是使用Python实现已知圆的圆心和半径以及圆外一点,求该点到圆的切点,并输出切点坐标以及绘制圆心、圆和切线图形的示例代码。这里使用了 matplotlib 库来进行图形绘制,确保在运行代码前已经安装了该库(可以通过 pip install matplotlib 进行安装)。

import matplotlib.pyplot as plt
import math


def find_tangent_points(circle_center, radius, point_outside):
    """
    求圆外一点到圆的切点坐标
    """
    # 计算圆心到圆外点的距离
    distance = math.sqrt((point_outside[0] - circle_center[0]) ** 2 + (point_outside[1] - circle_center[1]) ** 2)

    # 判断点是否真的在圆外
    if distance <= radius:
        raise ValueError("给定的点不在圆外,请重新输入圆外的点。")

    # 计算从圆心指向圆外点的向量与x轴正方向的夹角
    angle_to_point = math.atan2(point_outside[1] - circle_center[1], point_outside[0] - circle_center[0])

    # 计算圆心到圆外点的连线与圆半径在切点处形成的夹角
    angle_between = math.acos(radius / distance)

    # 计算两个切点的坐标
    tangent_point_1 = (
        circle_center[0] + radius * math.cos(angle_to_point + angle_between),
        circle_center[1] + radius * math.sin(angle_to_point + angle_between)
    )

    tangent_point_2 = (
        circle_center[0] + radius * math.cos(angle_to_point - angle_between),
        circle_center[1] + radius * math.sin(angle_to_point - angle_between)
    )

    return tangent_point_1, tangent_point_2


# 定义圆的圆心坐标
circle_center = (0, 0)
# 定义圆的半径
radius = 3
# 定义圆外一点的坐标
point_outside = (5, 5)

# 求切点坐标
tangent_points = find_tangent_points(circle_center, radius, point_outside)
tangent_point_1, tangent_point_2 = tangent_points

# 输出切点坐标
print(f"第一个切点坐标为: {tangent_point_1}")
print(f"第二个切点坐标为: {tangent_point_2}")

# 绘制图形
theta = range(0, 360)
x_circle = [circle_center[0] + radius * math.cos(math.radians(angle)) for angle in theta]
y_circle = [circle_center[1] + radius * math.sin(math.radians(angle)) for angle in theta]

plt.plot(x_circle, y_circle, 'b', label='Circle')
plt.plot(point_outside[0], point_outside[1], 'ro', label='Point outside')
plt.plot([point_outside[0], tangent_point_1[0]], [point_outside[1], tangent_point_1[1]], 'g', label='Tangent 1')
plt.plot([point_outside[0], tangent_point_2[0]], [point_outside[1], tangent_point_2[1]], 'g', label='Tangent 2')
plt.axis('equal')
plt.title('Circle, Point outside and Tangents')
plt.legend()
plt.show()

在上述代码中:
 
1. 首先定义了函数 find_tangent_points ,它接受圆的圆心坐标、半径以及圆外一点的坐标作为参数,通过三角函数关系计算出两个切点的坐标。
2. 然后定义了圆的圆心、半径以及圆外一点的坐标,并调用 find_tangent_points 函数求出切点坐标,接着输出了切点坐标。
3. 最后使用 matplotlib 库绘制了圆、圆外点以及两条切线的图形,并通过 show 函数展示出来。在绘制圆时,通过循环生成一系列角度对应的坐标点来近似绘制圆。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值