用python写一个输入4个坐标,依次连线,按照连线方向加宽2个单位,形成闭合图形,输出图形坐标的程序
时间: 2024-04-30 15:23:12 浏览: 216
这是一个可行的实现,但需要注意输入的坐标必须按照顺序连续。
```python
def add_width(coord, width):
"""
给坐标加宽
"""
x1, y1 = coord[0]
x2, y2 = coord[1]
# 计算法向量
nx, ny = y2 - y1, x1 - x2
# 计算单位向量
length = (nx**2 + ny**2)**0.5
ux, uy = nx / length, ny / length
# 计算加宽后的坐标
ax1, ay1 = x1 + width * ux, y1 + width * uy
ax2, ay2 = x2 + width * ux, y2 + width * uy
return [(ax1, ay1), (ax2, ay2)]
def add_width_to_coords(coords, width):
"""
给所有坐标加宽
"""
n = len(coords)
new_coords = []
for i in range(n):
new_coords.append(add_width([coords[i], coords[(i+1)%n]], width))
return new_coords
def main():
# 输入坐标
coords = []
for i in range(4):
x, y = map(int, input(f"请输入第{i+1}个坐标(x,y): ").split(","))
coords.append((x, y))
# 加宽
width = 2
new_coords = add_width_to_coords(coords, width)
# 输出坐标
print("加宽后的坐标为:")
for coord in new_coords:
x1, y1 = coord[0]
x2, y2 = coord[1]
print(f"({x1},{y1})-({x2},{y2})")
if __name__ == "__main__":
main()
```
以下是一组测试数据:
```
请输入第1个坐标(x,y): 0,0
请输入第2个坐标(x,y): 5,0
请输入第3个坐标(x,y): 5,5
请输入第4个坐标(x,y): 0,5
加宽后的坐标为:
(2.0,-2.0)-(7.0,-2.0)
(7.0,-2.0)-(7.0,7.0)
(7.0,7.0)-(0.0,7.0)
(0.0,7.0)-(0.0,-2.0)
```
阅读全文