用python写一个输入4个坐标,依次连线,按照连线方向加宽2个单位后,形成闭合图形,输出图形坐标的程序
时间: 2024-05-02 16:18:16 浏览: 104
以下是一个可能的实现:
```python
def widen_line(p1, p2, width):
dx = p2[0] - p1[0]
dy = p2[1] - p1[1]
length = (dx**2 + dy**2)**0.5
if length == 0:
return [(p1[0] - width/2, p1[1]), (p1[0] + width/2, p1[1])]
else:
dx_norm = dx / length
dy_norm = dy / length
return [(p1[0] - width/2*dy_norm, p1[1] + width/2*dx_norm),
(p2[0] - width/2*dy_norm, p2[1] + width/2*dx_norm),
(p2[0] + width/2*dy_norm, p2[1] - width/2*dx_norm),
(p1[0] + width/2*dy_norm, p1[1] - width/2*dx_norm)]
# 输入坐标
points = []
for i in range(4):
x = float(input('请输入第{}个点的横坐标:'.format(i+1)))
y = float(input('请输入第{}个点的纵坐标:'.format(i+1)))
points.append((x, y))
# 连线并加宽
widen_points = []
for i in range(len(points)):
j = (i + 1) % len(points)
widened = widen_line(points[i], points[j], 2)
widen_points.extend(widened)
# 输出形成的闭合图形坐标
print('形成的闭合图形坐标为:')
for p in widen_points:
print('({:.2f}, {:.2f})'.format(p[0], p[1]))
```
这个程序首先定义了一个 `widen_line` 函数,用于将两个点之间的线段加宽。该函数接受三个参数:第一个点坐标 `p1`、第二个点坐标 `p2`,以及加宽的宽度 `width`。函数返回一个包含四个点坐标的列表,表示加宽后形成的四边形。
接着,程序使用一个循环读取四个点的坐标,并将它们存储在一个列表 `points` 中。
然后,程序使用一个循环对相邻的两个点之间的线段进行加宽,并将加宽后的四边形的四个顶点坐标存储在一个列表 `widen_points` 中。
最后,程序输出所有顶点的坐标,形成闭合图形。注意,输出的坐标保留两位小数。
阅读全文