python - pygame图形界面 绘制爱心函数 r = 1-cos(θ)

最近做数学题,遇到一个“爱心函数”
即 r = 1 - cos(θ) . ——极坐标下函数表达式

用参数方程表示即:
x = (1 - cos(θ)) * cos(θ)
y = (1 - cos(θ)) * sin(θ)

放个函数图像 函数详情点这里

代码原理很简单,采用极坐标的方式,使用一个变量 t(即 θ ),每次循环自增(充当计时器/角度器), 用 t 来计算其他量即可。

使用修改屏幕每个像素的方式,绘制函数效果。

下面放张最终实现效果图

import timeimport pygame
from pygame import *
import math
import timepygame.init()
screen = (800, 800)
window = pygame.display.set_mode(screen)
pygame.display.set_caption("爱心函数")t = 0   # 角度计数器
r = 0   # 半径# text render
font = pygame.font.SysFont('Times', 30)
note = font.render("\"Heart Function\"", True, (255, 0, 0), (0, 0, 0))# list  存储函数 已绘制的点
heart_list = []
cos_list = [[0, 0]]
_cos_list = [[0, 0]]# 爱心函数即 r = 1 - cos(θ) , 极坐标下函数表达式
def heart_fx():global rr = 1 - math.cos(t)x = int(math.cos(t) * r * 100 + screen[0]/2)y = int((screen[1]/1.5 - math.sin(t) * r * 100))# 添加新的函数值点heart_list.append((x, y))# 当存储了一定量的函数点时,就把最开始的点清除,减少计算量if len(heart_list) > 600:heart_list.remove(heart_list[0])# y = cos(x)
def cos_fx():# 将已绘制的函数点左移,达到滚动效果for i in range(len(cos_list)):cos_list[i][0] -= 1cos_list.append([screen[0], int(- math.cos(t) * 50 + 150)])if len(cos_list) > 1000:cos_list.remove(cos_list[0])# y = 1 - cos(x)
def _cos_fx():for i in range(len(_cos_list)):_cos_list[i][0] -= 1_cos_list.append([screen[0], int(- (1 - math.cos(t)) * 50 + 150)])if len(_cos_list) > 1000:_cos_list.remove(_cos_list[0])while True:# init dataheart_fx()cos_fx()_cos_fx()# render graphics 绘制函数# heart hx, hyfor hx, hy in heart_list:window.set_at((hx, hy), (255, 255, 255))# cos cx, cyfor cx, cy in cos_list:window.set_at((cx, cy), (255, 255, 255))# 1 - cosfor cx, cy in _cos_list:window.set_at((cx, cy), (255, 255, 255))# line 绘制所需直线# zero line (y=0 灰线)pygame.draw.line(window, (100, 100, 100), (0, 150), (screen[0], 150), 2)# R line 红色半径线pygame.draw.line(window, (255, 0, 0), (screen[0] / 2, screen[1] / 1.5), (heart_list[-1][0], heart_list[-1][1]), 2)# render text 绘制文本_t = font.render('Angle: θ = ' + str(int(t/math.pi*180)) + "°", True, (0, 0, 255), (0, 255, 0))_r = font.render('R=1-cos(θ):' + str(r)[:5], True, (0, 0, 255), (0, 255, 0))cos = font.render('cos(θ):' + str(math.cos(t))[:5], True, (0, 0, 255), (0, 255, 0))_cos = font.render('1 - cos(θ):' + str(r)[:5], True, (0, 0, 255), (0, 255, 0))cos_w, cos_h = cos.get_size()_cos_w, _cos_h = _cos.get_size()window.blit(note, (int(screen[0]/1.5), int(screen[1]/1.3)))window.blit(_t, (0, 0))window.blit(cos, (screen[0]/1.05 - cos_w, cos_list[-1][1]))window.blit(_cos, (screen[0]/1.05 - _cos_w, _cos_list[-1][1]))window.blit(_r, (int(screen[0]/1.5), int(screen[1]/1.5)))# 更新画面display.update()# 更新角度值t += 0.01time.sleep(0.015)# 将画面用黑色填充,下次window.fill((0, 0, 0))for event in pygame.event.get():if event.type == pygame.QUIT:exit()break

pygame 绘制爱心函数 r = 1-cos(θ). Tag: python | 图形界面 | GUI相关推荐

  1. cosh matlab中怎么写,用MATLAB绘制cosh函数

    matlab如何绘制参数函数的图像? clear;clc;s=0:0.1:pi/2;t=0:0.1:3*pi/2;[s,t]=meshgrid(s,t);x=cos(s).*cos(t);y=cos( ...

  2. 写一个爱心的R语言代码

    下面是一段绘制爱心的R语言代码: # 设置画布大小 plot.new()# 设置图形的边界 par(xpd=TRUE)# 计算爱心的x坐标和y坐标 t <- seq(0, pi, length. ...

  3. 神经网络基础知识、常用激活函数及其Python图形绘制

    在人工智能与机器学习研究与应用领域,神经网络占有重要地位.神经网络(Neural Networks, NNs),又称人工神经网络(Artificial Neural Networks, ANNs),是 ...

  4. 用r语言画出y = ax^2 + bx + c,R语言中使用curve函数绘制常用函数曲线

    前面文章中介绍了使用plot函数绘制图形的方法.本文介绍一下使用R中curve函数绘制常见函数曲线的方法. 1.curve函数简介 curve函数语法格式如下: curve(expr, from = ...

  5. 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

    活动地址:CSDN21天学习挑战赛 用代码写出浪漫合集(爱心.玫瑰花)       本文目录: ​一.前言 二.用python.matplotlib.Matlab.java绘制爱心 (1)爱心图形1( ...

  6. python绘制繁花曲线代码_使用python和pygame绘制繁花曲线的方法

    前段时间看了一期<最强大脑>,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制, ...

  7. matlab画图入门篇--各种基本图形绘制的函数与实例【转载】

    MATLAB画图入门篇--各种基本图形绘制的函数与实例 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plo ...

  8. python神奇时钟项目_怎么在Python项目中利用Pygame绘制一个时钟

    怎么在Python项目中利用Pygame绘制一个时钟 发布时间:2020-11-30 14:24:30 来源:亿速云 阅读:54 作者:Leah 怎么在Python项目中利用Pygame绘制一个时钟? ...

  9. python动态爱心代码_python 动态绘制爱心的示例

    python 动态绘制爱心的示例 代码 import turtle turtle.bgcolor("black") turtle.pensize(2) sizeh = 1.2 de ...

  10. python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法

    第一种方法:桃心形公式 代码实现的一种方法 使用桃心形方程绘制爱心 var canvas = document.querySelector('canvas'); var ctx = canvas.ge ...

最新文章

  1. java最长同值路径_687.最长同路径值
  2. [PHP打野] 对pear-FSM的研究(一)基本了解
  3. 【转】Asp.net页面的生命周期
  4. android ImageButton显示本地图片
  5. LVS(5)——关于ipvsadm第一次启动失败的原因
  6. python储存_python数据储存
  7. 厉害了!阿里安全图灵实验室在ICDAR2017 MLT竞赛刷新世界最好成绩
  8. SQL数据库不用SQL语句能显示全表的内容_2020别再说你了解数据库了,你搞清楚这些问题了吗?...
  9. 有n 个长为m+1 的字符串,求前后m个字符匹配所能形成的最长字符串链:利用弗洛伊德算法求最长路径...
  10. 一个新的自己从2009年的第一天...
  11. 2016.9.18 --- Shenyang ol
  12. Unity 编辑器知识(—)如何绘制色块
  13. 文件服务器存储解决方案探索
  14. 软件使用,Microsoft Visual C++运行库合集包
  15. 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
  16. web前端笔试题整合
  17. MK802与外部硬件设备的通讯
  18. 财务金额转换:小写金额转换成大写算法
  19. 下载scikit_learn
  20. java 图片背景色_java处理图片背景颜色的方法

热门文章

  1. SQL数据库学习之路(一)
  2. 变分法和欧拉-拉格朗日方程(E-L equation)
  3. project不显示里程碑标志_Project教程 在Project软件中如何让里程碑任务显示更直观...
  4. 进程杀手 (prockiller)V2.82绿色版
  5. Diy Win7 OEMlogo
  6. 计算机快速启动BIOS,bios设置快速启动
  7. 日志服务器文档,日志服务器的搭建.docx
  8. 红旗linux桌面版_瑞星ESM杀毒软件For Linux获红旗兼容性认证
  9. 驱动精灵w8ndows xp sp2,独家率先支持Win8 驱动精灵2011 SP2发布
  10. 计算机怎样更新卡驱动,显卡驱动怎么升级