许昌建网站,广告艺术设计专业介绍,四川住房和城乡建设厅网站首页,柳州网站建设排行榜文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth… 文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多彩的玫瑰花代码节日系列1Python动漫风烟花秀代码2Python新年烟花秀代码3Python圣诞礼物代码4Python画圣诞树代码5Python可爱版圣诞树丨绿色6Python可爱版圣诞树丨粉色7Python大雪纷飞代码8Python生日蛋糕代码9Python五彩气球代码10Python国庆祝福代码11Python万圣礼物代码12Python愚人节礼物代码13Python浪漫星空代码14Python樱花树代码动漫系列1Python名侦探柯南2Python喜羊羊3Python懒羊羊4Python沸羊羊5Python小灰灰6Python小香香7Python灰太狼8Python海绵宝宝9Python哆啦A梦10Python凯蒂猫11Python猫和老鼠12Python草莓熊13Python迷你皮卡丘14Python高级皮卡丘15Python豪华皮卡丘16Python史迪仔17Python小熊猫18Python蜘蛛侠19Python可爱版蜡笔小新20Python萌萌的蜡笔小新21Python罗小黑22Python猪猪侠炫酷系列1 Python张万森下雪了2Python一闪一闪亮晶晶3Python黑客帝国代码雨4Python七彩花朵5Python模拟3D星空6Python金榜题名7Python满天星 写在前面
Python绘制一张太极八卦图的完整代码。
技术需求
1. 图形绘制库的支持
Turtle图形库使用Python的turtle库来实现图形的绘制。该库提供了基本的绘图功能如移动画笔、改变方向、绘制直线和曲线、填充颜色等。
2. 图形绘制功能 太极图绘制 初始化复位画笔位置和状态。偏移定位将画笔移动到太极图的起始位置。绘制轮廓绘制太极图的大圆和S形曲线。填充颜色分别填充黑白两色区域。绘制阴阳眼在太极图中心绘制两个小圆代表阴阳鱼的眼睛。 八卦图绘制 初始化复位画笔位置和状态。偏移定位根据八卦图的排列方式将画笔移动到每个卦象的起始位置。绘制卦象根据给定的卦象数据阳爻和阴爻绘制相应的线条。添加文字在适当的卦象位置添加卦名。
3. 参数化设计 太极图参数 半径太极图大圆的半径。线条粗细太极图线条的粗细。颜色太极图的颜色。 八卦图参数 偏移量八卦图相对于中心点的偏移量。线段长度每个卦象的线段长度。卦象数据包含八卦图中每个卦象的符号信息阳爻、阴爻和卦名。
4. 绘制控制
窗口设置设置绘图窗口的标题和大小。动画控制关闭动画追踪提高绘制速度。隐藏画笔绘制完成后隐藏画笔光标展示最终的图形。
5. 数据处理
卦象数据定义一个列表gua_lis包含每个卦象的符号信息阳爻、阴爻和卦名。遍历和条件判断根据卦象数据中的信息动态绘制相应的图形和文字。
6. 用户界面
窗口管理创建一个绘图窗口并设置窗口的标题和大小。显示结果绘制完成后保持窗口打开展示最终的太极八卦图。
完整代码
from turtle import *
# 返回原点
def rset():pensize(1)pencolor(black)penup()home()pendown()
# 设置画笔偏移初始化八卦和太极的画笔起始点保持整体居中
def offset(off_set, angle0, modetaiji):# off_set太极时为大圆半径八卦时要大于半径否则会与太极重合。# angle默认为0,mode默认为‘taiji’画太极的时候不需要设置默认即可画卦的时候angleangl,mode‘bagua’。penup()home() # 回到原点朝向东if mode taiji: # 太极right(90)fd(off_set)seth(0) # 朝向东else: # 八卦left(angle) # 每画一卦旋转45度的倍数开始下一卦。fd(off_set)left(90)pendown()
# 太极生成
def taiji(radius, pen_size2, colorblack):rset() # 初始化画笔pensize(pen_size)pencolor(color)offset(radius) # 画笔偏移至起始点fillcolor(black) # 填充颜色begin_fill() # 开始填充circle(radius, 180) # 画大圆的半圆circle(radius / 2, 180) # 画s型circle(-radius / 2, 180) # 画s型end_fill() # 结束填充circle(-radius, 180) # 画大圆的另一半圆# 上面小圆begin_fill()fillcolor(white)penup()home() # 返回原点默认朝东left(90)fd(radius * 0.7) # 初始化小圆画笔起始点right(90)pendown()circle(-radius * 0.2) # 画小圆end_fill()rset()# 下面小圆penup()begin_fill()fillcolor(black)right(90)fd(radius * 0.7)left(90)pendown()circle(radius * 0.2)end_fill()
# 八卦生成
def bagua(off_set, side, gua_lis):pensize(side / 2)for j, k in enumerate(gua_lis): # 枚举八卦列表获取元素和下标下标拿来判断旋转多少度angl j * 45 # 偏移角度0,45,90,135,180,225,270,315,360rset() # 初始化到原点offset(off_set, angleangl, modebagua) # 偏移到八卦画笔此时画笔位于线段中间点下面3行代码初始到线段开头pencolor(white)pensize(5)bk(side / 2)for i in k: # 遍历每一卦的集合1为阳也就是完整线段0为阴带断点的线段pencolor(black)if i 1:fd(side)elif i 0:fd(side * (1 / 3))penup()fd(side * (1 / 3))pendown()fd(side * (1 / 3))elif isinstance(i, str) and j 4: # 判断集合内内容为字符串时且为前5卦时直接用write方法打印penup()fd(side / 2)pendown()write(i, aligncenter, font(楷体, 15, bold)) # align有三个选项’left‘,’center‘’right‘i后面两项可不填else: # 后3卦多偏移了一些距离再用write方法打印避免文字与卦重叠影响效果penup()fd(side / 2)right(90)fd(15)pendown()write(i, aligncenter, font(楷体, 15, bold))penup() # 每画完一卦中的一条线后回到中点向外移动后开始画下一段线段bk(side / 2)right(90)fd(side / 2)left(90)bk(side / 2)pendown()
gua_lis [(1, 1, 0, 兑), (0, 0, 0, 坤), (1, 0, 1, 离), (0, 1, 1, 巽), (1, 0, 0, 震), (0, 0, 1, 艮),(0, 1, 0, 坎), (1, 1, 1, 乾)]
title(太极八卦图)
setup(0.5, 0.5)
tracer(0)
taiji(50)
bagua(70, 30, gua_lis)
hideturtle()
done()代码分析
这段代码使用Python的turtle图形库来绘制太极八卦图。在深入分析之前我们需要理解turtle库的基本概念它是一个用于绘制二维图形的简单工具通过控制一个虚拟的“海龟”在屏幕上移动来完成绘图任务。海龟的位置、方向和状态如是否落笔可以通过编程指令进行控制。
1. rset() 函数
这个函数用于将画笔即“海龟”复位到屏幕中央并设置一些默认属性比如线条粗细和颜色。这是为了确保每次绘制新的元素时都能从一个标准的位置和状态开始保证绘图的一致性和准确性。
2. offset() 函数
此函数的作用是将画笔移动到绘制太极图或八卦图所需的起始位置。它接受三个参数偏移量off_set、偏移角度angle默认值为0和模式mode默认值为’taiji’。对于太极图来说它将画笔垂直向下移动指定的距离而对于八卦图它则根据传入的角度值旋转画笔方向并沿该方向移动指定距离以便于后续绘制八卦中的每个卦象。
3. taiji() 函数
该函数负责绘制太极图。它首先调用rset()函数复位画笔然后设定线条宽度和颜色接着调用offset()函数定位到太极图的起始点。之后使用turtle的绘图命令如circle、begin_fill和end_fill等绘制出太极图的轮廓和黑白两色部分。值得注意的是太极图中心的小圆阴阳鱼的眼睛也在此函数中绘制完成。
4. bagua() 函数
这个函数用来绘制八卦图。它接收三个参数偏移量off_set、线段长度side以及包含各卦符号信息的列表gua_lis。函数内部遍历gua_lis列表根据每个卦象的数据由1和0组成的元组代表阳爻和阴爻绘制相应的图形。此外如果元组中包含字符串卦名则会在适当的位置使用write函数输出这些文字。为了使卦象之间排列整齐函数还会根据需要调整画笔的位置和方向。
5. 绘制过程
初始化设置窗口标题、大小关闭动画追踪通过tracer(0)提高绘制速度。太极图绘制调用taiji(50)绘制太极图其中50是太极图的大圆半径。八卦图绘制调用bagua(70, 30, gua_lis)绘制八卦图其中70是偏移量30是线段长度gua_lis是包含八卦信息的列表。结束隐藏海龟光标显示绘制好的图像通过done()函数。
6. 技术亮点
模块化设计通过定义多个功能明确的函数使得整个程序结构清晰易于维护和扩展。灵活的参数设置各个函数允许传入不同的参数值从而可以轻松调整太极图和八卦图的具体外观。精确的位置控制利用turtle提供的精确位置控制能力确保了太极图和八卦图能够准确无误地被绘制出来。
综上所述这段代码不仅实现了太极八卦图的绘制而且展示了如何通过合理的设计和组织代码来解决复杂的图形绘制任务。
写在后面
我是一只有趣的兔子感谢你的喜欢。