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. 费用保险单,如何失焦时自动补零
  2. 用Python分析了1w四六级数据,教你如何通过四六级!
  3. 如何通过抓包实战来学习Web协议?
  4. Stack(nowcoder 11253-K)
  5. [小技巧][JAVA][转换]整型int与字符串String相互转换
  6. hid编程 qt_hidapi-0.7.0 OS Develop 操作系统开发 240万源代码下载- www.pudn.com
  7. 最受企业青睐的开源软件包是什么?它们的三大风险是什么?
  8. VS2008 安装失败(“Web 创作组件”无法)
  9. 模拟多线程给多用户发送短信
  10. 小米路由器mini刷7620老毛子Padavan固件(支持私人云储存 aria2 QOS $$R等)
  11. 蝴蝶效应---。。。
  12. 数据三等分离散python_数据自习室01-描述性统计量
  13. Unity-黑暗之魂复刻-角色攻击
  14. YOLOv7来临:论文解读附代码解析
  15. phase portrait 如果爱情像数学一样
  16. 分布式系统开发实战:分布式存储,分布式存储常用技术
  17. 华擎主板bios设置图解_[华擎主板bios设置图解]详解华擎主板bios恢复出厂设置
  18. 【转】程序员10大境界【走在路上,潜心修行】
  19. Oracle经典书籍
  20. 在ie8上js实现简单的combobox功能(支持拼音检索)

热门文章

  1. 第一章 空间解析几何与向量代数(1)
  2. 联想服务器重装系统后usb无法启动,联想启天装win7系统的详细教程完美解决USB不能用的问题...
  3. HBuilder常用的快捷操作
  4. 完全删除conime.exe
  5. CodeSmith 介绍
  6. resin服务器中间件
  7. 风玫瑰图的绘制,基于气象A文件(windrose)
  8. hd4400 显卡opencore 下的 8个苹果问题解决方法
  9. 第一章:【UCHome二次开发】uchome文件体系介绍
  10. 【esp32lvgl】-2.1 # esp32移植lvgl7驱动st7789屏幕(ESP-IDF框架)