注册 登录
编程论坛 Python论坛

用Turtle绘制新冠状病毒

木偶人丶 发布于 2020-03-06 12:03, 5848 次点击
小白一枚,但是对python很感兴趣。现在在自学,对于现在疫情也一直在关注,所以想用python中的turtle库画出新冠病毒的模型,但是自己只能画出一个轮廓。还希望论坛里的大佬帮忙给点想法。一起完善这个比较有意义的事情。感谢ing....
12 回复
#2
书生牛犊2020-03-06 12:15
turtle 库可以使用绝对坐标画画的,楼主可以考虑手动测绘某幅模型的各处曲线,及坐标   然后逐个添加。。。(类似于拼拼图)

至于用数学函数/表达式  画画,,,,难度非常高。


像我的话,画个心形都要上网找函数。自己画就只会(两条线段加两个半圆,过渡及其不圆滑)

#3
木偶人丶2020-03-06 13:19
回复 2楼 书生牛犊
对,我也在考虑表面不圆滑这个问题,还有突触的不规则分布,和大小问题。所以我在想是用for循环加列表和元组方式还是random随机的方式来弄(而且random的方式我根本就不熟练)
#4
木偶人丶2020-03-06 13:25
这就是一个简单的想到的模型图了
只有本站会员才能查看附件,请 登录
#5
a9618557662020-03-06 18:11
楼主想出来了吗?我们这周作业是这个,给我搞迷了,刚开始学水平不高画不出来
#6
时光流逝2020-03-07 16:59
回复 2楼 书生牛犊
可以用心形线函数x^2+y^2+a*x=a*sqrt(x^2+y^2)
#7
时光流逝2020-03-07 17:00
回复 2楼 书生牛犊
不过我没实现过
#8
木偶人丶2020-03-09 12:27
程序代码:

import turtle as t #将turtle库给予别名t
from random import randint

t.setup(800, 1000, 0, 0)
t.speed(0)
t.fillcolor("purple")
# 病毒的外框
t.begin_fill()
for i in range(6):
    t.circle(200, 30)
    t.right(50)
    t.fd(100)
    t.left(90)
    t.circle(30, 30)
    t.left(45)
    t.fd(80)
    t.right(90)
    if i == 5:
        t.circle(200, 30)
t.end_fill()
# 病毒内里面的圆
t.fillcolor("gray")

for i in range(4):
    t.penup()
    t.left(90)
    if i == 0:
        t.fd(180)
    else:
        t.fd(randint(50, 100))  # 随机距离
    t.pendown()
    t.begin_fill()
    t.circle(12, 360)
    t.end_fill()
   
t.penup()
t.goto(200,300)
t.pendown()
t.write('新冠病毒',font=("Arial",34,"normal"))
# 画框一直存在
t.done()

#9
Sakurayuki2020-03-09 18:00
回复 8楼 木偶人丶
好抽象啊
#10
ghz092020-03-14 19:28
回复 7楼 时光流逝
py几啊,是3.2.5吗
#11
ghz092020-03-17 10:41
想加一个绿色触手的效果,但最后没有内部填充,望大佬指教

import turtle as t #将turtle库给予别名t
from random import randint

t.setup(800, 1000, 0, 0)
t.speed(0)
t.fillcolor("blue")#自定义颜色
# 病毒的外框
t.begin_fill()
t.pencolor("black")
for i in range(6):
    t.circle(200, 30)
    t.right(50)
    t.fd(100)
    t.left(90)
    t.circle(30, 30)
    t.forward(5)
    t.pencolor("green")
    t.fillcolor("green")
    t.begin_fill()
    t.circle(10)
    t.end_fill()
    t.fillcolor("blue")
    t.pencolor("black")
    t.left(45)
    t.fd(80)
    t.right(90)
    t.circle(15)
    t.fd(10)
    if i == 5:
        t.circle(200, 30)
t.end_fill()
# 病毒内里面的圆
t.fillcolor("gray")

for i in range(4):
    t.penup()
    t.left(90)
    if i == 0:
        t.fd(180)
    else:
        t.fd(randint(50, 100))  # 随机距离
    t.pendown()
    t.begin_fill()
    t.circle(12, 360)
    t.end_fill()
   
t.penup()
t.goto(100,300)
t.pendown()


t.write('新冠肺炎',font=("Arial",34,"normal"))
# 画框一直存在
t.done()

#12
ghz092020-03-17 10:45
回复 8楼 木偶人丶
想加一个绿色触手效果,但内部无法填充,望大佬指教


import turtle as t #将turtle库给予别名t
from random import randint

t.setup(800, 1000, 0, 0)
t.speed(0)
t.fillcolor("blue")
# 病毒的外框
t.begin_fill()
t.pencolor("black")
for i in range(6):
    t.circle(200, 30)
    t.right(50)
    t.fd(100)
    t.left(90)
    t.circle(30, 30)
    t.forward(5)
    t.pencolor("green")
    t.fillcolor("green")
    t.begin_fill()
    t.circle(10)
    t.end_fill()
    t.fillcolor("blue")
    t.pencolor("black")
    t.left(45)
    t.fd(80)
    t.right(90)
    t.circle(15)
    t.fd(10)
    if i == 5:
        t.circle(200, 30)
t.end_fill()
# 病毒内里面的圆
t.fillcolor("gray")

for i in range(4):
    t.penup()
    t.left(90)
    if i == 0:
        t.fd(180)
    else:
        t.fd(randint(50, 100))  # 随机距离
    t.pendown()
    t.begin_fill()
    t.circle(12, 360)
    t.end_fill()
   
t.penup()
t.goto(100,300)
t.pendown()


t.write('新冠肺炎',font=("Arial",34,"normal"))
# 画框一直存在
t.done()

#13
木偶人丶2020-04-06 18:13
回复 12楼 ghz09
我不是什么大佬,我也是刚学,可能帮不了你什么
1