turtle画曲线_心形曲线图

turtle画曲线_心形曲线图这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

运行结果

心形曲线 爱心

心形曲线 爱心
心形曲线 爱心

心形曲线函数

x 2 + ( y − x 2 3 ) 2 = 1 x^2+(y-\sqrt[3]{x^2})^2=1 x2+(y3x2
)2=
1

将原函数变形:
y = x 2 3 ± 1 − x 2 y=\sqrt[3]{x^2}\pm\sqrt{1-x^2} y=3x2
±
1x2

实现思路:

显然,x的值域为:[-1,1]
在值域内取适当个x的值,并求出相应y的值,用描点法绘制曲线,填充颜色,即可得到一个心形图。
在此基础上进行扩展,对心形图的位置和大小设定随机参数,即可获得随机的多个心形图。

代码

import random
import turtle
# import numpy as np

pen = turtle.Pen()
# pen.speed(10)
pen.ht()

'''pen.begin_fill() for i in range(360): i /= 180 / math.pi length = A * (1 - math.cos(i)) x, y = length * math.cos(i), length * math.sin(i) pen.goto(x, y) pen.end_fill()'''

# for i in range(360):
# i /= math.pi
# length = A * (1 - math.sin(i))
# x, y = length * math.cos(i), length * math.sin(i)

random.seed(100)
times = 100
# X = sorted((1 - np.random.random(times)))
X = [_ / times for _ in range(times)]
d = [[x ** (2 / 3), (1 - x ** 2) ** 0.5] for x in X]
pos = [None] * times * 4
for i in range(len(X)):
    pos[i + times * 0] = [X[i], d[i][0] + d[i][1]]
    pos[i + times * 1] = [X[-i - 1], d[-i - 1][0] - d[-i - 1][1]]
    pos[i + times * 2] = [-X[i], d[i][0] - d[i][1]]
    pos[i + times * 3] = [-X[-i - 1], d[-i - 1][0] + d[-i - 1][1]]
print('begin draw')


def draw(A=100, fillcolor='red', scale=1):
    turtle.tracer(False)
    start_x, start_y = pen.pos()
    pen.seth(90)
    pen.pu()
    pen.goto(start_x, pos[0][1] * A + start_y)
    pen.fillcolor(fillcolor)
    pen.pd()
    pen.begin_fill()
    for x, y in pos:
        pen.goto(x * scale * A + start_x, y * A + start_y)
    pen.end_fill()
    turtle.update()


def draw_more():
    for i in range(100):
        pen.pu()
        pen.goto(random.randint(-900, 900), random.randint(-500, 500))
        # pen.pd()
        draw(A=random.randint(10, 100), fillcolor=random_color(), scale=1.2)


def hex_(num):
    return f'{hex(num)[2:]:0>2}'


def random_color():
    r, g, b = random.randint(200, 255), random.randint(0, 20), random.randint(0, 20)
    return f'#{hex_(r)}{hex_(g)}{hex_(b)}'


turtle.Screen().delay(False)
pen.pencolor('snow')
for i in range(100):
    draw_more()
    pen.clear()
turtle.done()

注意描点的顺序,要保证连贯性,否则无法正常闭合,也就无法正常填充颜色。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184226.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据挖掘在电子商务中的应用

    数据挖掘在电子商务中的应用如何对大量信息进行有效组织利用,使用户能够从大量繁杂的信息中找出真正有价值的信息和知识,帮助企业制定更好的营销策略。信息处理技术有了新的应用研究课题——数据挖掘。 1.数据挖掘在电子商务中的作用  数据挖掘技术之所以可以服务电子商务,是因为它能够挖掘出活动过程中的潜在信息以指导电子商务营销活动。在电子商务中其作用有4个方面:  (1)挖掘客户活动规律,针对性的在电子商务平台下以提供…

    2022年6月20日
    31
  • flowable camunda activiti 功能对比

    flowable camunda activiti 功能对比flowablecamundaactiviti三个框架都是从jbpm框架诞生出来的,先是有jbpm4,然后出来了一个activiti5,activiti5发展一段时间,又出来了一个Camunda。activiti5发展了4年,紧接着出来了一个flowable。本文重点对flowablecamunda两个框架的功能对比。对比的camunda版本是7.10.0,flowable框架的版本…

    2022年5月21日
    166
  • signature=624b2ab6df2ed724d785f89ffa77adce,CiteSeerX — Approved memorandum with signature is on file…

    signature=624b2ab6df2ed724d785f89ffa77adce,CiteSeerX — Approved memorandum with signature is on file…Abstract•BrowardPuertoRican/Hispanicstudents’meanCompositescoresmatchedorsurpassedPuertoRican/Hispanicstudentsinthestateandnationwideineveryarea.•MexicanAmerican/Chicano,Afri…

    2022年5月31日
    45
  • 使用 Laravel sharedLock 与 lockForUpdate 进行数据表行锁「建议收藏」

    使用 Laravel sharedLock 与 lockForUpdate 进行数据表行锁

    2022年2月15日
    46
  • idea创建web项目没有webapp_为什么idea创建不了web项目

    idea创建web项目没有webapp_为什么idea创建不了web项目1、点击菜单栏File→ProjectStructure2、在Modules模块中,增加web配置3、设置web根目录和web.xml文件所在位置。自动生成的目录中,web改成src\main\webapp,如下图4、点击OK,效果如下图…

    2022年9月1日
    5
  • p6spy简介_p6教程

    p6spy简介_p6教程在公司项目中运用了这项技术,一开始不清楚这是干啥用的,在网上查找资料有所一定的了解,但是应该不够全面,希望可以评论指出。p6spy是数据库动态监控的一种框架,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。下面我们来看一下…

    2022年9月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号