五角星五个角在坐标系上面的坐标计算[图]

给大家做五角星参考用

可以使用Python中的Tkinter库来实现形界面的绘制。以下是一个简单的示例代码,可以在窗口中绘制三形、四棱形和五棱星: ```python import tkinter as tk import math class DrawingApp: def __init__(self, master): self.master = master master.title("Drawing App") self.canvas = tk.Canvas(master, width=400, height=400) self.canvas.pack() # 坐标系 self.origin = (200, 200) # 画三形 self.draw_triangle() # 画四棱形 self.draw_square() # 画五棱星 self.draw_star() def draw_triangle(self): # 三形的三个顶坐标 points = [(0, -50), (50, 50), (-50, 50)] # 将三形顶坐标转换为画布坐标 coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points] # 在画布上绘制三形 self.canvas.create_polygon(coords, outline='black', fill='white') def draw_square(self): # 四棱形的四个顶坐标 points = [(50, -50), (50, 50), (-50, 50), (-50, -50)] # 将四棱形顶坐标转换为画布坐标 coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points] # 在画布上绘制四棱形 self.canvas.create_polygon(coords, outline='black', fill='white') def draw_star(self): # 五棱星的五个坐标 points = [(0, -50), (30, -15), (50, 40), (-50, 40), (-30, -15)] # 将五棱星顶坐标转换为画布坐标 coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in points] # 计算五棱星内部的五个坐标 inner_points = [(coords[i][0] + coords[(i+2)%5][0])/2, (coords[i][1] + coords[(i+2)%5][1])/2 for i in range(5)] # 将五棱星内部顶坐标转换为画布坐标 inner_coords = [(self.origin[0]+x, self.origin[1]-y) for x, y in inner_points] # 在画布上绘制五棱星 self.canvas.create_polygon(coords, outline='black', fill='white') self.canvas.create_polygon(inner_coords, outline='black', fill='white') root = tk.Tk() app = DrawingApp(root) root.mainloop() ``` 在这个示例中,我们创建了一个名为`DrawingApp`的类,它包含三个方法:`draw_triangle()`、`draw_square()`和`draw_star()`,分别用于绘制三形、四棱形和五棱星。 每个方法都使用`create_polygon()`方法在画布上绘制多边形。在绘制之前,我们需要将多边形的顶坐标从相对于形中心的坐标转换为相对于画布原坐标。 对于五棱星,我们还需要计算五个内部顶坐标,并将其也转换为画布坐标。我们使用了一些简单的三函数来计算这些内部顶坐标。 最后,在主函数中创建一个`DrawingApp`对象,并使用`mainloop()`方法显示窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值