Python玫瑰花

news2024/11/26 15:42:49

系列文章

序号文章目录直达链接
1浪漫520表白代码https://want595.blog.csdn.net/article/details/130666881
2满屏表白代码https://want595.blog.csdn.net/article/details/129794518
3跳动的爱心https://want595.blog.csdn.net/article/details/129503123
4漂浮爱心https://want595.blog.csdn.net/article/details/128808630
5爱心光波https://want595.blog.csdn.net/article/details/132311588
6流星雨https://want595.blog.csdn.net/article/details/129395465
7满天星https://want595.blog.csdn.net/article/details/129572082
8烟花秀https://want595.blog.csdn.net/article/details/128746664
9圣诞树https://want595.blog.csdn.net/article/details/128213770
10雪花代码https://want595.blog.csdn.net/article/details/129038108
11模拟星空https://want595.blog.csdn.net/article/details/129948882
12生日蛋糕https://want595.blog.csdn.net/article/details/129694998
13樱花树https://want595.blog.csdn.net/article/details/130350743
14五彩气球https://want595.blog.csdn.net/article/details/130950744
15七彩花朵https://want595.blog.csdn.net/article/details/130897838
16恶搞代码https://want595.blog.csdn.net/article/details/131274862
17代码雨https://want595.blog.csdn.net/article/details/132574687
18中秋星空https://want595.blog.csdn.net/article/details/132910075
19国庆祝福https://want595.blog.csdn.net/article/details/133427031
20皮卡丘https://want595.blog.csdn.net/article/details/133783136

前言

我用Python实现了炫酷的3D玫瑰花!

Turtle画图

Turtle 是一个简单的图形库,可用于 Python 编程语言。它可以让你使用 Python 程序画出各种图形,包括线条、图案、几何图形等等。Turtle 的使用非常简单,特别适合初学者学习编程。

以下是关于 Turtle 的入门指南,介绍了 Turtle 的基本功能以及如何通过编程来控制 Turtle 画图。

1.安装 Turtle

Turtle 是 Python 的标准库之一,因此你不需要额外安装它。如果你使用的是 Python 3.x 版本,只需在 Python 命令行键入以下命令:

import turtle

如果不报错,则说明你已经成功导入了 Turtle 库。

2.创建一个 Turtle 画布

在开始画图之前,你需要创建一个画布。使用以下代码来创建一个窗口和一个空白画布:

import turtle

# 创建画布
window = turtle.Screen()

# 创建一个空白画布
canvas = turtle.Turtle()

在这个示例中,我们首先导入了 Turtle 库。然后,使用 `turtle.Screen()` 创建一个名为 `window` 的 Turtle 窗口。接下来,我们使用 `turtle.Turtle()` 创建一个名为 `canvas` 的新画布,它位于窗口的中心。

3.移动 Turtle

现在,我们可以开始向画布绘制图形了。首先,让我们看看如何移动 Turtle。Turtle 通过向前或向后移动一定距离来画一条线。在开始之前,让我们先了解一下坐标系。在 Turtle 中,窗口的中心点是坐标原点(0,0),向右是正 X 轴方向,向上是正 Y 轴方向。坐标的单位是画布上的像素。

使用以下代码,让 Turtle 向右移动 50 个像素:

# 移动 Turtle 50 个像素
canvas.forward(50)

`forward()` 方法让 Turtle 向前移动一定距离,它的参数是像素数。现在,如果你在 Python 窗口中运行代码,你应该可以看到一个向右移动 50 像素的线。如果要向左移动,只需将参数改为负数:

# 向左移动 50 个像素
canvas.forward(-50)

使用 `backward()` 方法也可以让 Turtle 向后移动一定距离:

# 向后移动 50 个像素
canvas.backward(50)

除了向前和向后移动之外,还可以让 Turtle 向左或向右转动一定角度:

# 向左旋转 90 度
canvas.left(90)

# 向右旋转 45 度
canvas.right(45)

当然,你也可以使用 `goto()` 方法直接将 Turtle 移动到指定的坐标处:

# 将 Turtle 移动到坐标 (100, 100)
canvas.goto(100, 100)

4.绘制形状

除了直线以外,Turtle 还可以使用 `circle()` 方法绘制圆形:

# 绘制半径为 50 的圆形
canvas.circle(50)

`circle()` 方法的参数是圆的半径,如果要绘制椭圆,可以使用 `shapesize()` 方法:

# 绘制长半轴为 200,短半轴为 100 的椭圆
canvas.shapesize(200, 100)

当然,你也可以使用 `begin_fill()` 和 `end_fill()` 方法填充形状:

# 绘制一个黄色的圆形
canvas.color('yellow')
canvas.begin_fill()
canvas.circle(50)
canvas.end_fill()

5.线条属性

除了移动和绘制形状以外,你还可以设置 Turtle 的线条属性。以下是一些常用的属性:

- `pensize()` 设置线条宽度
- `penup()` 和 `pendown()` 控制画笔的起始和结束状态
- `color()` 设置画笔颜色
- `speed()` 设置画笔移动速度

# 设置线条宽度为 5
canvas.pensize(5)

# 抬起画笔
canvas.penup()

# 移动到坐标 (50, 50)
canvas.goto(50, 50)

# 放下画笔
canvas.pendown()

# 设置画笔颜色为红色
canvas.color('red')

# 设置画笔移动速度为 10
canvas.speed(10)

6.示例代码

接下来,我们将使用 Turtle 画一个简单的正方形:

import turtle

# 创建画布和 Turtle 对象
window = turtle.Screen()
canvas = turtle.Turtle()

# 设置画笔宽度和颜色
canvas.pensize(5)
canvas.color('red')

# 画正方形
for i in range(4):
    canvas.forward(100)
    canvas.right(90)

# 显示窗口
turtle.done()

以上代码将创建一个名为 `window` 的窗口,创建一个名为 `canvas` 的 Turtle 对象。然后,我们设置了画笔的宽度和颜色。接下来,我们使用 `for` 循环绘制正方形的四个边。最后,使用 `turtle.done()` 显示窗口并等待用户关闭。

7.总结

Turtle 是一个简单的图形库,可用于 Python 编程语言。使用 Turtle,你可以使用 Python 程序画出各种图形,包括线条、图案、几何图形等等。通过本入门指南的介绍,你应该已经了解了 Turtle 的基本操作和功能,可以开始绘制自己的图形了。

普通玫瑰花

程序设计

import turtle

turtle.Turtle().screen.delay(0)
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)

# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)

# 叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()

turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)
turtle.mainloop()

程序分析

这段代码使用 Python 的 turtle 库绘制了一朵复杂的花朵。运行在 Python 解释器中,并使用 turtle.Turtle() 函数创建一个 Turtle 对象进行绘制。

首先设置初始位置,然后使用 turtle.penup() 和 turtle.pendown() 函数分别切换画笔状态为抬起和落下。接下来使用 turtle.circle() 函数和 turtle.fd() 函数绘制花瓣、叶子和花蕊等各个部分,并使用 turtle.fillcolor() 和 turtle.begin_fill() 函数设置填充颜色和启动填充。最后使用 turtle.end_fill() 函数结束填充。

整个过程中涉及到多次调用 turtle.circle() 函数绘制圆弧段,turtle.fd() 函数绘制直线段,turtle.left() 和 turtle.right() 函数控制方向,turtle.setheading() 函数设置朝向等。最后使用 turtle.mainloop() 函数保持绘画窗口的持久显示。

因为代码中使用了多个 turtle 库的函数,感性地理解需要一定的绘画知识和 Python 编程知识。如果对这些函数的使用和参数含义有疑问,可以查阅 turtle 库的官方文档或进行进一步学习。

立体玫瑰花

程序设计

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(projection='3d')
[x, t] = np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5) / 575 * 20 * np.pi + 4 * np.pi)
p = (np.pi / 2) * np.exp(-t / (8 * np.pi))
change = np.sin(15 * t) / 150
u = 1 - (1 - np.mod(3.3 * t, 2 * np.pi) / np.pi) ** 4 / 2 + change
y = 2 * (x ** 2 - x) ** 2 * np.sin(p)
r = u * (x * np.sin(p) + y * np.cos(p))
h = u * (x * np.cos(p) - y * np.sin(p))
c = plt.get_cmap('Reds')
……(关注文末公众号免费领取完整代码)

程序分析

这段代码使用了 Python 的 matplotlib 库绘制了一个三维玫瑰花图形,其中利用了 numpy 库进行数学计算和生成网格点。

首先创建了一个 5x5 英寸大小的图形对象 fig,然后使用 add_subplot() 函数创建一个 3D 坐标系 ax。接下来生成网格点坐标 x 和 t,并使用这些坐标计算出平面参数 p 和变化值 change,以及空间坐标值 u、y、r 和 h。

然后使用 plt.get_cmap() 函数获取色图对象,并使用坐标值绘制出玫瑰花的曲面 surf。最后使用 set_xticks()、set_yticks() 和 set_zticks() 函数设置坐标轴的刻度标签,然后用 plt.show() 函数显示图形并保持窗口的持久显示。

整个过程中运用了 numpy 库的 meshgrid()、sin()、exp()、arange() 和 mod() 等函数,以及 matplotlib 库的 figure()、subplot()、plot_surface()、get_cmap()、set_xticks()、set_yticks() 和 set_zticks() 等函数,需要一定的数学计算和 Python 编程知识。

四季玫瑰花

程序设计

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
[x, t] = np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5) / 575 * 30 * np.pi - 4 * np.pi)
p = (np.pi / 2) * np.exp(-t / (8 * np.pi))
change = np.sin(20 * t) / 50
u = 1 - (1 - np.mod(3.3 * t, 2 * np.pi) / np.pi) ** 4 / 2 + change
y = 2 * (x ** 2 - x) ** 2 * np.sin(p)
r = u * (x * np.sin(p) + y * np.cos(p)) * 1.5
h = u * (x * np.cos(p) - y * np.sin(p))
……(关注文末公众号免费领取完整代码)

程序分析

这段代码使用了 numpy 和 matplotlib 的库。它创建了一个三维玫瑰花,其中的点是通过一系列的数学运算计算得出的。

首先,用 np.meshgrid 创建了一个网格,包括 x 和 t 坐标。x 坐标是 0 到 1 的 25 个数,t 坐标是 0 到 30π,步长为 0.5,与它的指数和三角函数一起用于后面的计算。

接下来,通过一些数学公式计算出了一些新的值,如 p、change、u、y、r 和 h。它们分别是:

- p:计算一个正弦函数,用于后面的计算。
- change:计算一个正弦函数,用于后面的计算。
- u:计算一个双曲线函数,用于后面的计算。
- y:根据一些三角函数和指数计算 y 坐标的值。
- r:使用上述计算出的值得出一个极坐标的半径。
- h:使用上述计算出的值得出一个高度。

最后,使用 plt.get_cmap 获得了一个颜色映射,并将这些点绘制到了三维图形中。

该代码中的各项数学运算很复杂,但主要目的是创建一个有趣的、复杂的三维玫瑰花图形。

尾声

喜欢玫瑰花的小伙伴们给个赞呗!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1097241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见的作物模型应用技巧!DSSAT模型、APSIM模型、WOFOST模型与PCSE模型等应用

①最新DSSAT作物模型建模方法及应用 DSSAT模型内核算法是基于Fortran语言开发的,软件界面是基于C进行开发。了解和熟悉DSSAT模型的关键算法和软件的操作是学习DSSAT模型的基础。此外,想要成为一名优秀的作物模型使用者与科研团队不可或缺的人才&#xff…

Windows 安装 nvm 提示 ‘“node“‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

Windows 安装 nvm 提示 ‘“node”’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决办法 先卸载电脑中原有 nodejs 版本,再安装 nvm 即可。 安装完成之后记得重新打开终端 使用 安装 nodejs 18 添加环境变量 在 Path 里添加这两个变量名 结果 现…

XPS测试常见问题及解答(二)-科学指南针

在做X 射线光电子能谱(XPS)测试时,科学指南针检测平台工作人员在与很多同学沟通中了解到,好多同学仅仅是通过文献或者师兄师姐的推荐对XPS测试有了解,但是对于其原理还属于小白阶段,针对此,科学指南针检测平台团队组织…

认识京东联盟API,获取APPkey和APPsecret|直接调用KEY方式

做过淘客开发的一定接触过淘宝API开发。 而做京东联盟软件自然离不开京东联盟API。 京东联盟API目前上线的有很多。京东平台商品API。 https://jos.jd.com/api/list.htm?id117 Paste_Image.png 但是京东联盟API获取比较难,没办法在线申请,需要找官方…

NuGet包使用方法

NuGet包使用方法 必备条件 安装包括 dotnet CLI 的 .NET Core SDK。 从 Visual Studio 2017 开始,dotnet CLI 将自动随任何与 .NET Core 相关的工作负载一起安装。 如果你还没有帐户,请在 nuget.org 上注册一个免费帐户。 创建新帐户会发送确认电子邮…

Everything和SVN结合使用-在Everything中显示SVN

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

实录分享 | Alluxio 在网易大数据的应用与优化

欢迎来到【微直播间】,2min纵览大咖观点 本次分享主要包括四个方面: 背景介绍;对象存储场景优化;Impala 引擎适配;通用功能增强。 一、 背景介绍 网易有数大数据基础平台NDH:NDH 是网易对标 Cloudera C…

【Linux学习笔记】代码编译工具gcc/g++

1. 程序的翻译1.1. 预处理1.2. 编译1.3. 汇编1.4. 链接 2. 动态链接和静态链接2.1. 动态链接2.2. 静态链接2.3. 动态链接和静态链接的区别2.4. 动态链接和静态链接的验证 3. make/makefile3.1. 依赖方法和依赖关系3.2. 写一个makefile文件3.3. PHONY的意义3.4. makefile的推导规…

Ubuntu:VS Code IDE安装ESP-IDF【保姆级】(草稿)

物联网开发学习笔记——目录索引 Visual Studio Code(简称“VS Code”)是Microsoft向开发者们提供的一款真正的跨平台编辑器。 参考: VS Code官网:Visual Studio Code - Code Editing. Redefined 乐鑫官网:ESP-IDF …

[网站部署03]宝塔+worldPress部署Ripro主题网站

1.下载好主题网站上传到下方目录即可 下载地址:请自行百度搜索,官网收费 下载好压缩包上传到/www/wwwroot/你的网站目录/wp-content/themes 2.回到Worldpress后台点击外观可以看到主题网站 http://192.168.49.128/wp-admin/themes.php 剩下的就是设置…

【matlab海洋专题】高级玫瑰图--风速风向频率玫瑰图--此图细节较多

玫瑰图分享过好多 这一次的还是不一样,细节较多 本期内容 【matlab海洋专题】高级玫瑰图–风速风向频率玫瑰图–此图细节较多: 总结起来,确实不好画! 图片如下: 图片名称我不知道,我意会为: 风速风向…

众和策略:国际油价走高,石油板块强势拉升,通源石油、和顺石油等涨停

石油板块16日盘中大幅拉升,到发稿,通源石油、和顺石油、贝肯动力、中曼石油、泰山石油、仁智股份等涨停,潜能恒信、博迈科涨约8%。 燃气板块亦上扬,到发稿,洪通燃气、美能动力涨约5%,新疆火炬、九丰动力涨…

众和策略:减肥药概念热度不减,百花医药斩获4连板,公司提示风险

减肥药概念16日延续强势,部分个股继续走高。到发稿,博瑞医药涨约11%,百花医药、双鹭药业涨停,金凯生科涨近10%,昊帆生物涨超8%,华森制药、翰宇药业、常山药业等涨超5%。值得留意的是,博瑞医药近…

以任意位置中间元素翻转字符串:

前置知识: 你要学会如何将字符串转化为字符,如何将字符转为字符串 字符串转化为字符 String str "abcdef";char[] strChar str.toCharArray();for(int i :strChar){System.out.print((char)i" ");//需要进行强制类型转换&#x…

迅为RK3588开发板使用RKNN-Toolkit-lite2运行测试程序

1 首先也需要部署运行环境,将库文件放入 RK3588 开发板上,我们将网盘资料“iTOP-3588 开发 板 \02_ 【 iTOP-RK3588 开 发 板 】 开 发 资 料 \12_NPU 使 用 配 套 资 料 \05_Linux_librknn_api\librknn_api\aarch64”路径下的文件通过U盘拷贝到开发板的…

进程相关介绍(二)

进程状态 当我们的进程运行的时候有很多状态,因为我们的CPU资源是有限的,我们的进程必须有选择性的放入CPU上面才可以运行。因此我们的进程就存在了很多种进程状态,比如运行态,阻塞态,挂起态等等。在本次的博客当中我们…

如何选择功放芯片?音质好的功放芯片性能详解

数字功放也称为数字音频功放芯片,是一种利用数字信号处理技术进行音频放大的集成电路芯片;是现代音频放大技术的重要组成部分,广泛应用于音响系统、家庭影院、汽车音响、无线音箱等领域,以实现高质量的音频放大效果。 其工作原理…

优思学院:成功团队的十大秘诀,助你事业腾飞!

在竞争激烈的商业环境中,成功的团队是一个企业腾飞的关键。一个协作默契、高效运作的团队不仅可以提高生产力,还能激发创新,推动企业的可持续发展。那么,到底是什么让一支团队在竞争中脱颖而出呢?本文将为你揭示成功团…

【Linux学习笔记】git工具

1. 仓库克隆1.1. .git ignore文件 2. git的三板斧 1. 仓库克隆 首先打开gitee网站注册一个账号,使用该账号创建一个仓库,然后复制仓库的https地址,然后到xshell使用命令进行仓库克隆。 创建仓库 其中创建仓库,详细的可以去网上搜…

AD20绘制电路板的外形

今天学习了绘制电路板外形的方法,记录一下,回头忘了还能在看看,便能很快的回忆起来了,比看视频啥的要高效的多。毕竟是自己写的,印象要深刻的多。 首先新建一个PCBDoc文件,方法如下图: 在新建的…