关于零基础教学视频'Tkinter8'中的五角星
本帖最后由 阴阳神万物主 于 2021-9-29 09:00 编辑恩姆,小甲鱼在这一讲中举的那个画五角星的例子感觉很累啊,全部的五个点都要自己算。而且呢,例子对于数学的利用不是很到位……
以下贴出我自己的代码:
from tkinter import *
import math as m
root = Tk()
w = Canvas(root, width=200, height=100)
w.pack()
thecenter = (100, 50) #这个是圆心
R = 50
startA = m.pi/2 #找点的起始角度,小甲鱼例子里的顶点与圆心连线的倾斜角
pos = [] #储存点的列表
for i in range(5): #这里在找点
p = (thecenter - int(R * m.cos(startA+i*(2*m.pi/5))),\
thecenter - int(R * m.sin(startA+i*(2*m.pi/5))))
pos.append(p)
a = 4 #a的值随意,是整数就行
points = [] #传给polygon构造函数的列表
for i in range(5): #取点,range里是几,就取几个点(用while也行,直接就能得到完整的五角星,这里用for可以查看连线是怎么连的)
points.extend(,pos])
a += 2
w.create_polygon(points, outline='green', fill='yellow')
mainloop()
以下是具体数学原理:
**** Hidden Message *****
好看看 本帖最后由 bravsheng 于 2021-9-18 16:24 编辑
厉害啊,方法真好!放入坐标系后一下子简单了!用for循环转一圈,正好得到每个顶点的坐标值
用extend添加每次得到的坐标值 (这个extend第一次看到它被用到,学习了!)
每次+2,一个隔一个,就能画出五角星。 但是要保证数字必须在列表里面。
楼主用的除5取余方法,真是巧妙!居然可以限定在0~4之间,这样确保在列表里面!
我一开始y方向的加减不太理解,后来查了资料才发现canvas中将y轴方向弄相反了! 怪不得y方向的加减都反了
但是x轴应该是正常的,我觉得x坐标那里应该用加号吧,虽然得到结果是一样的。
p = (thecenter + int(R * m.cos(startA+i*(2*m.pi/5))),\
thecenter - int(R * m.sin(startA+i*(2*m.pi/5))))
来看看,厉害了
页:
[1]