python实现利用中点算法绘制两条直线代码(1)分别是:L1(Point(20, 10), Point(100, 180)), L2(Point(-50, 100), Point(100, -50))。
时间: 2024-10-17 09:04:53 浏览: 27
当然,我们可以按照上面提供的示例稍作调整来绘制这两条线及其中点连接线。这里直接给出代码:
```python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle # 为了添加点标记
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# 定义两条线的起点和终点
L1 = Point(20, 10) and Point(100, 180)
L2 = Point(-50, 100) and Point(100, -50)
# 计算中点
midpoint_L1 = ((L1[0].x + L1[1].x) / 2, (L1[0].y + L1[1].y) / 2)
midpoint_L2 = ((L2[0].x + L2[1].x) / 2, (L2[0].y + L2[1].y) / 2)
# 创建绘图环境
plt.figure(figsize=(8, 6))
# 绘制两条线
plt.plot([L1[0].x, L1[1].x], [L1[0].y, L1[1].y], 'r-', label=f'Line 1: {L1}')
plt.plot([L2[0].x, L2[1].x], [L2[0].y, L2[1].y], 'b-', label=f'Line 2: {L2}')
# 在点上添加标记(圆圈)
circle1 = Circle((L1[0].x, L1[0].y), 2, color='r', fill=True)
circle2 = Circle((L1[1].x, L1[1].y), 2, color='r', fill=True)
circle3 = Circle((L2[0].x, L2[0].y), 2, color='b', fill=True)
circle4 = Circle((L2[1].x, L2[1].y), 2, color='b', fill=True)
plt.gca().add_patch(circle1)
plt.gca().add_patch(circle2)
plt.gca().add_patch(circle3)
plt.gca().add_patch(circle4)
# 绘制中点连线
plt.plot([L1[0].x, midpoint_L1[0]], [L1[0].y, midpoint_L1[1]], 'g--')
plt.plot([midpoint_L1[0], midpoint_L2[0]], [midpoint_L1[1], midpoint_L2[1]], 'c--')
# 添加标签
plt.title('Drawing Lines with Midpoints')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
# 显示图形
plt.grid(True)
plt.show()
```
在这个版本中,我还增加了对每个端点的小圆圈标记,并设置了网格线。注意,`Point` 类在这里只是一个简化的表示,如果需要的话可以扩展它的功能。
阅读全文