鱼C论坛

 找回密码
 立即注册
查看: 2252|回复: 3

[技术交流] 关于零基础教学视频'Tkinter8'中的五角星

[复制链接]
发表于 2019-8-27 18:10:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 阴阳神万物主 于 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[0] - int(R * m.cos(startA+i*(2*m.pi/5))),\
         thecenter[1] - 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%5][0],pos[a%5][1]])
    a += 2

w.create_polygon(points, outline='green', fill='yellow')

mainloop()
以下是具体数学原理:
游客,如果您要查看本帖隐藏内容请回复


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-16 09:16:48 | 显示全部楼层
好看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 16:21:42 | 显示全部楼层
本帖最后由 bravsheng 于 2021-9-18 16:24 编辑

厉害啊,方法真好!  放入坐标系后一下子简单了!  用for循环转一圈,正好得到每个顶点的坐标值
用extend添加每次得到的坐标值 (这个extend第一次看到它被用到,学习了!)
每次+2,一个隔一个,就能画出五角星。 但是要保证数字必须在列表里面。
楼主用的除5取余方法,真是巧妙!居然可以限定在0~4之间,这样确保在列表里面!

我一开始y方向的加减不太理解,后来查了资料才发现canvas中将y轴方向弄相反了! 怪不得y方向的加减都反了
但是x轴应该是正常的,我觉得x坐标那里应该用加号吧,虽然得到结果是一样的。
p = (thecenter[0] + int(R * m.cos(startA+i*(2*m.pi/5))),\
         thecenter[1] - int(R * m.sin(startA+i*(2*m.pi/5))))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-7 21:08:38 | 显示全部楼层
来看看,厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表