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

这篇具有很好参考价值的文章主要介绍了pygame 绘制爱心函数 r = 1-cos(θ). Tag: python | 图形界面 | GUI。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

放个函数图像 函数详情点这里
r=1-cos胃,Python,pygame,python

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

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

下面放张最终实现效果图

r=1-cos胃,Python,pygame,python文章来源地址https://www.toymoban.com/news/detail-640028.html

import time

import pygame
from pygame import *
import math
import time

pygame.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 r
    r = 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] -= 1
    cos_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 data
    heart_fx()
    cos_fx()
    _cos_fx()

    # render graphics 绘制函数

    # heart hx, hy
    for hx, hy in heart_list:
        window.set_at((hx, hy), (255, 255, 255))
    # cos cx, cy
    for cx, cy in cos_list:
        window.set_at((cx, cy), (255, 255, 255))
    # 1 - cos
    for 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.01
    time.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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 脚本:python绘制七夕爱心

    https://blog.csdn.net/m0_68089732/article/details/132391141

    2024年02月07日
    浏览(26)
  • Python绘制爱心代码(七夕限定版)

    又到了一年一度的七夕节啦!你还在发愁送女朋友什么礼物,不知道怎样表达你满满的爱意吗?别担心,我来帮你!今天,我将教你使用Python绘制一个跳动的爱心,用创意和幽默为这个特殊的夜晚增添浪漫和趣味。话不多说先看示例: 这段代码使用Python的tkinter库实现了一个

    2024年02月12日
    浏览(40)
  • 使用Python绘制跳动的爱心,让你的代码也充满爱意!

    今天我要分享一个浪漫小技巧,使用Python中的HTML制作一个立体、动态的小爱心。通过成千上百个小爱心的组合,形成一个大爱心,从内到外呈现出立体的效果,给人带来强烈的视觉冲击。这个小技巧非常浪漫,让人感受到爱的力量。 一.粉色爱心 运行结果:  二.蓝色动态

    2024年02月08日
    浏览(34)
  • MATLAB 之 绘制三维图形的基本函数、三维曲面和其他三维图形

    三维图形具有更强的数据表现能力,为此 MATLAB 提供了丰富的函数来绘制三维图形。绘制三维图形与绘制二维图形的方法十分类似,很多都是在二维绘图的基础上扩展而来。 基本的三维图形函数为 plot3 ,它是将二维绘图函数 plot 的有关功能扩展到三维空间,用来绘制三维曲线

    2024年02月06日
    浏览(29)
  • MATLAB 之 二维图形绘制的基本函数和辅助操作

    二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,除直角坐标系外,还可以采用对数坐标、极坐标。数据点可以用向量或矩阵形式给出,类型可以是实型或复型。二维曲形的绘制无疑是其他绘图操作的基础。 在 MATLAB 中,基本的绘图函数是 pl

    2024年02月06日
    浏览(40)
  • 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    鼠标指针指向界面中的 Canvas 画布某个位置 , Canvas 画布中绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放 ; 使用鼠标滚轮缩放后 , 在 Canvas 中绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一

    2024年02月15日
    浏览(26)
  • python如何做出图形界面,用python做图形用户界面

    本篇文章给大家谈谈python如何做出图形界面,以及用python做图形用户界面,希望对各位有所帮助,不要忘了收藏本站喔。 图形用户界面(Graphical User Interface,GUI)是用户与程序交互的接口,好的GUI会大大提高用户交互体验,其实就是我们平时使用电脑时,使用鼠标、键盘点击

    2024年02月03日
    浏览(44)
  • python如何做出图形界面,python图形化界面设计gui

    本篇文章给大家谈谈python编写图形化界面的工具,以及python如何做出图形界面,希望对各位有所帮助,不要忘了收藏本站喔。 大家好,小编来为大家解答以下问题,python如何做出图形界面,用python做图形用户界面,今天让我们一起来看看吧! 一.定义理解 Python自带了tkinter 模

    2024年02月20日
    浏览(39)
  • Python和Pygame绘制自动驾驶和移动机器本地规划器算法

    可视化自动驾驶车辆路径规划和移动机器人中使用的众多不同的本地规划器算法。 该应用程序提供可定制的参数,以更好地了解每种算法的内部工作原理并探索它们的优点和缺点。 它是用 Python 编写的,并使用 Pygame 来渲染可视化。 基类 概率路线图 快速探索随机树 势场 迪

    2024年02月02日
    浏览(30)
  • 【pyqt5】【多线程】【matplotlib】解决子线程上运行的matplotlib无法在主线程上的UI界面上绘制图形的问题

    在使用PyQt5为一个项目写UI界面的时候,我试图把matplotlib绘制的图像展示在UI界面的窗口中,但matplotlib是运行在一个子线程中的,这导致它出现了如下警告: UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail. 并且我无法使用 matplotlib.backends.backend_qt5agg 下的 Figur

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包