pygame 绘制爱心函数 r = 1-cos(θ). Tag: python | 图形界面 | GUI
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相关推荐
- 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( ...
- 写一个爱心的R语言代码
下面是一段绘制爱心的R语言代码: # 设置画布大小 plot.new()# 设置图形的边界 par(xpd=TRUE)# 计算爱心的x坐标和y坐标 t <- seq(0, pi, length. ...
- 神经网络基础知识、常用激活函数及其Python图形绘制
在人工智能与机器学习研究与应用领域,神经网络占有重要地位.神经网络(Neural Networks, NNs),又称人工神经网络(Artificial Neural Networks, ANNs),是 ...
- 用r语言画出y = ax^2 + bx + c,R语言中使用curve函数绘制常用函数曲线
前面文章中介绍了使用plot函数绘制图形的方法.本文介绍一下使用R中curve函数绘制常见函数曲线的方法. 1.curve函数简介 curve函数语法格式如下: curve(expr, from = ...
- 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)
活动地址:CSDN21天学习挑战赛 用代码写出浪漫合集(爱心.玫瑰花) 本文目录: 一.前言 二.用python.matplotlib.Matlab.java绘制爱心 (1)爱心图形1( ...
- python绘制繁花曲线代码_使用python和pygame绘制繁花曲线的方法
前段时间看了一期<最强大脑>,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制, ...
- matlab画图入门篇--各种基本图形绘制的函数与实例【转载】
MATLAB画图入门篇--各种基本图形绘制的函数与实例 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plo ...
- python神奇时钟项目_怎么在Python项目中利用Pygame绘制一个时钟
怎么在Python项目中利用Pygame绘制一个时钟 发布时间:2020-11-30 14:24:30 来源:亿速云 阅读:54 作者:Leah 怎么在Python项目中利用Pygame绘制一个时钟? ...
- python动态爱心代码_python 动态绘制爱心的示例
python 动态绘制爱心的示例 代码 import turtle turtle.bgcolor("black") turtle.pensize(2) sizeh = 1.2 de ...
- python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法
第一种方法:桃心形公式 代码实现的一种方法 使用桃心形方程绘制爱心 var canvas = document.querySelector('canvas'); var ctx = canvas.ge ...
最新文章
- 费用保险单,如何失焦时自动补零
- 用Python分析了1w四六级数据,教你如何通过四六级!
- 如何通过抓包实战来学习Web协议?
- Stack(nowcoder 11253-K)
- [小技巧][JAVA][转换]整型int与字符串String相互转换
- hid编程 qt_hidapi-0.7.0 OS Develop 操作系统开发 240万源代码下载- www.pudn.com
- 最受企业青睐的开源软件包是什么?它们的三大风险是什么?
- VS2008 安装失败(“Web 创作组件”无法)
- 模拟多线程给多用户发送短信
- 小米路由器mini刷7620老毛子Padavan固件(支持私人云储存 aria2 QOS $$R等)
- 蝴蝶效应---。。。
- 数据三等分离散python_数据自习室01-描述性统计量
- Unity-黑暗之魂复刻-角色攻击
- YOLOv7来临:论文解读附代码解析
- phase portrait 如果爱情像数学一样
- 分布式系统开发实战:分布式存储,分布式存储常用技术
- 华擎主板bios设置图解_[华擎主板bios设置图解]详解华擎主板bios恢复出厂设置
- 【转】程序员10大境界【走在路上,潜心修行】
- Oracle经典书籍
- 在ie8上js实现简单的combobox功能(支持拼音检索)
热门文章
- 第一章 空间解析几何与向量代数(1)
- 联想服务器重装系统后usb无法启动,联想启天装win7系统的详细教程完美解决USB不能用的问题...
- HBuilder常用的快捷操作
- 完全删除conime.exe
- CodeSmith 介绍
- resin服务器中间件
- 风玫瑰图的绘制,基于气象A文件(windrose)
- hd4400 显卡opencore 下的 8个苹果问题解决方法
- 第一章:【UCHome二次开发】uchome文件体系介绍
- 【esp32lvgl】-2.1 # esp32移植lvgl7驱动st7789屏幕(ESP-IDF框架)