码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python玫瑰花


    目录

    系列文章

    前言

    Turtle画图

    普通玫瑰花

    立体玫瑰花

    四季玫瑰花

    尾声


    系列文章

    序号文章目录直达链接
    表白系列
    1无法拒绝的表白界面https://want595.blog.csdn.net/article/details/134744894
    2满屏飘字表白代码https://want595.blog.csdn.net/article/details/135037388
    3无限弹窗表白代码https://want595.blog.csdn.net/article/details/134744711
    4李峋同款可写字版跳动的爱心https://want595.blog.csdn.net/article/details/134744191
    5流星雨https://want595.blog.csdn.net/article/details/134747408
    6漂浮爱心https://want595.blog.csdn.net/article/details/134744929
    7爱心光波https://want595.blog.csdn.net/article/details/134747365
    8玫瑰花https://want595.blog.csdn.net/article/details/134747447
    节日系列
    1新春/跨年烟花秀(2022)https://want595.blog.csdn.net/article/details/128727394
    烟花秀(2023)https://want595.blog.csdn.net/article/details/135042880
    粒子烟花https://want595.blog.csdn.net/article/details/136029420
    2圣诞节圣诞礼物https://want595.blog.csdn.net/article/details/135336583
    圣诞树(2022)https://want595.blog.csdn.net/article/details/128428985
    绿色圣诞树(2023)https://want595.blog.csdn.net/article/details/135048607
    粉色圣诞树(2023)https://want595.blog.csdn.net/article/details/135043042
    3冬至大雪纷飞https://want595.blog.csdn.net/article/details/128806017
    4生日生日蛋糕https://want595.blog.csdn.net/article/details/128739755
    5儿童节五彩气球https://want595.blog.csdn.net/article/details/128741043
    6国庆节国庆祝福https://want595.blog.csdn.net/article/details/128740923
    7万圣节万圣礼物https://want595.blog.csdn.net/article/details/128734395
    8愚人节愚人代码https://want595.blog.csdn.net/article/details/128696990
    9中秋节浪漫星空https://want595.blog.csdn.net/article/details/128737284
    10植树节樱花树https://want595.blog.csdn.net/article/details/128700178
    动漫系列
    1名侦探柯南系列柯南https://want595.blog.csdn.net/article/details/134777613
    2喜羊羊与灰太狼系列喜羊羊https://want595.blog.csdn.net/article/details/134778583
    懒羊羊https://want595.blog.csdn.net/article/details/134847642
    灰太狼https://want595.blog.csdn.net/article/details/135335303
    小灰灰https://want595.blog.csdn.net/article/details/135335445
    小香香https://want595.blog.csdn.net/article/details/135056783
    3海绵宝宝系列海绵宝宝https://want595.blog.csdn.net/article/details/134847364
    4哆啦A梦系列哆啦A梦https://want595.blog.csdn.net/article/details/135037884
    5HelloKitty系列hellokittyhttps://want595.blog.csdn.net/article/details/135337732
    6Tom&Jerry系列Tom&Jerryhttps://want595.blog.csdn.net/article/details/135337775
    7草莓熊系列草莓熊https://want595.blog.csdn.net/article/details/135337832
    8皮卡丘系列迷你皮卡丘https://want595.blog.csdn.net/article/details/135337911
    高级皮卡丘https://want595.blog.csdn.net/article/details/135337937
    豪华皮卡丘https://want595.blog.csdn.net/article/details/135337947
    炫酷系列
    1  一闪一闪亮星星系列张万森下雪了https://want595.blog.csdn.net/article/details/135336915
    一闪一闪亮星星https://want595.blog.csdn.net/article/details/135337049
    2代码雨https://want595.blog.csdn.net/article/details/135054341
    3七彩花朵https://want595.blog.csdn.net/article/details/135056670
    43D星空https://want595.blog.csdn.net/article/details/135056516
    5金榜题名https://want595.blog.csdn.net/article/details/135056150
    6满天星https://want595.blog.csdn.net/article/details/135056305
    ……

    前言

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

    完整代码:https://want595.blog.csdn.net/article/details/134747447

    Turtle画图

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

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

    1.安装 Turtle

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

    import turtle

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

    2.创建一个 Turtle 画布

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

    1. import turtle
    2. # 创建画布
    3. window = turtle.Screen()
    4. # 创建一个空白画布
    5. canvas = turtle.Turtle()

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

    3.移动 Turtle

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

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

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

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

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

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

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

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

    1. # 向左旋转 90 度
    2. canvas.left(90)
    3. # 向右旋转 45 度
    4. canvas.right(45)

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

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

    4.绘制形状

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

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

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

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

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

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

    5.线条属性

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

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

    1. # 设置线条宽度为 5
    2. canvas.pensize(5)
    3. # 抬起画笔
    4. canvas.penup()
    5. # 移动到坐标 (50, 50)
    6. canvas.goto(50, 50)
    7. # 放下画笔
    8. canvas.pendown()
    9. # 设置画笔颜色为红色
    10. canvas.color('red')
    11. # 设置画笔移动速度为 10
    12. canvas.speed(10)

    6.示例代码

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

    1. import turtle
    2. # 创建画布和 Turtle 对象
    3. window = turtle.Screen()
    4. canvas = turtle.Turtle()
    5. # 设置画笔宽度和颜色
    6. canvas.pensize(5)
    7. canvas.color('red')
    8. # 画正方形
    9. for i in range(4):
    10.     canvas.forward(100)
    11.     canvas.right(90)
    12. # 显示窗口
    13. turtle.done()

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

    7.总结

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

    普通玫瑰花

    程序设计

    1. import turtle
    2. turtle.Turtle().screen.delay(0)
    3. # 设置初始位置
    4. turtle.penup()
    5. turtle.left(90)
    6. turtle.fd(200)
    7. turtle.pendown()
    8. turtle.right(90)
    9. # 花蕊
    10. turtle.fillcolor("red")
    11. turtle.begin_fill()
    12. turtle.circle(10, 180)
    13. turtle.circle(25, 110)
    14. turtle.left(50)
    15. turtle.circle(60, 45)
    16. turtle.circle(20, 170)
    17. turtle.right(24)
    18. turtle.fd(30)
    19. turtle.left(10)
    20. turtle.circle(30, 110)
    21. turtle.fd(20)
    22. turtle.left(40)
    23. turtle.circle(90, 70)
    24. turtle.circle(30, 150)
    25. turtle.right(30)
    26. turtle.fd(15)
    27. turtle.circle(80, 90)
    28. turtle.left(15)
    29. turtle.fd(45)
    30. turtle.right(165)
    31. turtle.fd(20)
    32. turtle.left(155)
    33. turtle.circle(150, 80)
    34. turtle.left(50)
    35. turtle.circle(150, 90)
    36. turtle.end_fill()
    37. # 花瓣1
    38. turtle.left(150)
    39. turtle.circle(-90, 70)
    40. turtle.left(20)
    41. turtle.circle(75, 105)
    42. turtle.setheading(60)
    43. turtle.circle(80, 98)
    44. turtle.circle(-90, 40)
    45. # 花瓣2
    46. turtle.left(180)
    47. turtle.circle(90, 40)
    48. turtle.circle(-80, 98)
    49. turtle.setheading(-83)
    50. # 叶子1
    51. turtle.fd(30)
    52. turtle.left(90)
    53. turtle.fd(25)
    54. turtle.left(45)
    55. turtle.fillcolor("green")
    56. turtle.begin_fill()
    57. turtle.circle(-80, 90)
    58. turtle.right(90)
    59. turtle.circle(-80, 90)
    60. turtle.end_fill()
    61. turtle.right(135)
    62. turtle.fd(60)
    63. turtle.left(180)
    64. turtle.fd(85)
    65. turtle.left(90)
    66. turtle.fd(80)
    67. # 叶子2
    68. turtle.right(90)
    69. turtle.right(45)
    70. turtle.fillcolor("green")
    71. turtle.begin_fill()
    72. turtle.circle(80, 90)
    73. turtle.left(90)
    74. turtle.circle(80, 90)
    75. turtle.end_fill()
    76. turtle.left(135)
    77. turtle.fd(60)
    78. turtle.left(180)
    79. turtle.fd(60)
    80. turtle.right(90)
    81. turtle.circle(200, 60)
    82. 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 库的官方文档或进行进一步学习。

    立体玫瑰花

    程序设计

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. fig = plt.figure(figsize=(5, 5))
    4. ax = fig.add_subplot(projection='3d')
    5. [x, t] = np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5) / 575 * 20 * np.pi + 4 * np.pi)
    6. ……

    程序分析

    这段代码使用了 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 编程知识。

    四季玫瑰花

    程序设计

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from matplotlib import cm
    4. fig = plt.figure()
    5. ax = fig.add_subplot(projection='3d')
    6. [x, t] = np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5) / 575 * 30 * np.pi - 4 * np.pi)
    7. p = (np.pi / 2) * np.exp(-t / (8 * np.pi))
    8. ……

    程序分析

    这段代码使用了 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 获得了一个颜色映射,并将这些点绘制到了三维图形中。

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

    尾声

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

  • 相关阅读:
    [黑马程序员Pandas教程]——DataFrame查询数据
    计算机毕设(附源码)JAVA-SSM加油站安全事故案例库管理系统
    可落地的DDD(7)-战术设计上的一些误区
    Fisher辨别分析
    数组名和&数组名
    ffmpeg 合并视频到一个画布
    oracle 序列的属性有哪些
    `SpringBoot`+`axios`结合发送`ajax`请求
    ChatGPT如何助力科研创新,提升研究效率?
    全志ARM926 Melis2.0系统的开发指引④
  • 原文地址:https://blog.csdn.net/m0_68111267/article/details/133851128
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号