使用python绘制两个相互外切的圆,图像具有合适的刻度比例,并能完整清晰地显示两个圆
时间: 2024-09-20 19:18:22 浏览: 34
在Python中,可以使用matplotlib库来绘制相互外切的圆,同时设置合适的刻度比例。下面是一个简单的示例:
```python
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import numpy as np
# 定义圆的参数
r1 = 5 # 第一个圆的半径
r2 = 7 # 第二个圆的半径
center1 = [0, 0] # 第一个圆的中心 (0,0)
center2 = [15, 0] # 第二个圆的中心 (15,0)
# 创建figure和axis
fig, ax = plt.subplots()
ax.set_aspect('equal') # 设置等比例缩放,保持圆形真实形状
# 绘制第一个圆
circle1 = Circle(center1, r1, fill=False) # 非填充圆
ax.add_patch(circle1)
# 绘制第二个圆
circle2 = Circle(center2, r2, fill=False)
ax.add_patch(circle2)
# 计算并添加切线
radius_difference = abs(r1 - r2)
dx = center2[0] - center1[0]
dy = center2[1] - center1[1]
if dy == 0: # 如果圆心在x轴上,斜率不存在,直接画垂直线
x_line = np.linspace(min(center1[0], center2[0]) - radius_difference,
max(center1[0], center2[0]) + radius_difference, 100)
ax.plot(x_line, [0]*len(x_line), 'k-')
else:
angle = np.arctan(dy / dx) if dx > 0 else np.pi + np.arctan(dy / dx) # 计算角度
x_line = r1 * np.cos(angle) + center1[0] # 切线方程
y_line = r1 * np.sin(angle) + center1[1]
ax.plot([x_line, center2[0]], [y_line, center2[1]], 'k-', linewidth=1)
# 显示图例和标签
ax.legend([circle1, circle2], ['圆1', '圆2'])
ax.set_title('两个相互外切的圆')
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
plt.show()
阅读全文