你需要计算出一个边长

的长方体

边长根据半径(从中心到顶点的距离)计算

apotem(从一条边的中心到中点的距离)是从边长计算出来的。

(more here)

在下面的示例中,bbox位于创建的多边形的中心;您可以根据需要偏移它以匹配您的首选锚定点。在

给定同一个边界框,所有多边形都被计算成内接在同一个圆内——外接圆是多边形边数趋于无穷大时的极限,见下图。在import tkinter as tk

import math

WIDTH, HEIGHT = 500, 500

class Point:

"""convenience for point arithmetic"""

def __init__(self, x, y):

self.x, self.y = x, y

def __add__(self, other):

return Point(self.x + other.x, self.y + other.y)

def __iter__(self):

yield self.x

yield self.y

class RegularPolygon:

def __init__(self, num_sides, bbox_side, x, y): # x, y are bbox center canvas coordinates

self.bbox_side = bbox_side

self.num_sides = num_sides

self.side_length = None

self.apothem = None

self._calc_side_length()

self.points = [Point(x - self.side_length // 2, y - self.apothem)]

self._make_points()

self.lines = []

self._make_lines()

def _calc_side_length(self):

"""Side length given the radius (circumradius):

i/e the distance from the center to a vertex

"""

self.side_length = 2 * (self.bbox_side // 2) * math.sin(math.pi / self.num_sides)

# Apothem, i/e distance from the center of the polygon

# to the midpoint of any side, given the side length

self.apothem = self.side_length / (2 * math.tan(math.pi / self.num_sides))

def _make_points(self):

_angle = 2 * math.pi / self.num_sides

for pdx in range(self.num_sides):

angle = _angle * pdx

_x = math.cos(angle) * self.side_length

_y = math.sin(angle) * self.side_length

self.points.append(self.points[-1] + Point(_x, _y))

def _make_lines(self):

for p0, p1 in zip(self.points[:-1], self.points[1:]):

self.lines.append((*p0, *p1))

def draw(self, canvas):

for line in self.lines:

canvas.create_line(line)

# alternatively, use canvas.create_polygon(points coordinates) instead

root = tk.Tk()

canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT, bg="cyan")

canvas.pack()

CENTER = Point(WIDTH // 2, HEIGHT // 2)

for n_sides in range(3, 12):

p = RegularPolygon(n_sides, 300, *CENTER)

p.draw(canvas)

root.mainloop()

绘制3到12个边的规则多边形(包括)

给定相同的边界框,所有多边形都被计算为内接在同一个圆内,即外接圆。

python五边形的代码_如何使用pythonttkinter画布中的create_line创建五边形和六边形?...相关推荐

  1. python画熊猫代码_超清字符画——Python代码

    字符画视频如下,可以先预览一下效果(建议进入BILIBILI全屏观看):[樱花绽放]代码敲出武汉加油(全屏观看)期待战疫成功,武大赏樱_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bi ...

  2. python动态执行代码_第6.6节 Python动态执行小结

    一.    Python动态执行支持通过输入数据流或文件传入Python源代码串,进行编译后执行,可以通过这种方式扩展Python程序的功能: 二.    动态执行方法可能导致恶意攻击,因此使用时需要 ...

  3. python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

  4. python嵌入shell代码_大家一起学python-Python基础1

    本节内容 Python简介 Python的发展史 选择Python 2 还是python 3? Python安装 第一个Python程序 Python变量 学习怎么输入 数据类型 数据运算基础 表达式 ...

  5. python回测代码_只用3行Python回测你的交易策略

    作者|Lorenzo Ampil 编译|VK 来源|Towards Data Science 自从我开始学习投资,我接触了不同的股票分析方法-技术分析和基本面分析.我甚至读过很多关于这些技巧的书和文章 ...

  6. python新年有趣代码_搞几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码!...

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 为提高大家对"Python"编程语言的学习兴趣,今天给大家分享几款有趣的Python程序代 ...

  7. python比心代码_细思恐极,插上U盘就开始执行Python代码的程序

    源 / 知乎    文 / DeepWeaver 昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索 ...

  8. eclipse git 取远程代码_【JAVA】Eclipse中使用git进行pull远程代码

    当使用eclipse或者MyEclipse进行pull远程代码的时候,或者github的代码的时候报如下错误代码: 代表我们没有配置我们的Git地址,这里我教大家配置一下.首先下面是错误代码: The ...

  9. azure云数据库_在Azure Cosmos DB中使用PowerShell创建和删除数据库

    azure云数据库 Our testing or development may call for dynamic creation on the database level for Azure C ...

最新文章

  1. 【工具】13 款 Linux 实用工具推荐,个个是神器!(附下载链接)
  2. 使用vs2015开发linux:Ubuntu程序
  3. poj 2985(并查集+线段树求K大数)
  4. Linux Redis 安装
  5. c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法
  6. 推荐一个Python的开源小工具大合集!
  7. iOS-获取通讯录信息
  8. Android 偶见花屏 bug,无法手动重现
  9. 孙鑫VC学习笔记:第十三讲 (二) 设置文档标题
  10. GitHub GraphQL API已正式可用
  11. 钟平---逻辑英语的语法讲解
  12. 【单片机】2.4 AT89S52的存储器结构
  13. 夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)
  14. 如何快速搭建自己的github.io博客
  15. 【每日一句】名人金句学英语(20221130)
  16. Mac软件卸载:安全彻底地卸载Microsoft Outlook
  17. 影视后期制作中AEnbsp;抠像技术浅…
  18. 【读书笔记】《读懂一本书》——如何读书不枯燥,读得懂,记得住
  19. GraphQL的了解和简单使用
  20. 打印html,h5打印页面

热门文章

  1. 《那些年啊,那些事——一个程序员的奋斗史》——48
  2. zx-quill+vue+element实现富文本图片上传到服务器
  3. 《TCPIP网络编程》学习笔记
  4. java图片识别(文字、字母、数字)
  5. 推荐一个好用的免费空间。
  6. 华为认证 HCIA-IoT V1.0 (物联网工程师) 模拟试卷
  7. 【mask2former】环境配置+cityscapes全景分割
  8. 【Unity插件】游戏摇杆Joystick
  9. 首创STM32 USB主机驱动4G rndis设备
  10. 为什么协程比线程的执行效率更高?