zz手表网站,南昌网站定制公司哪家好,创建wordpress网站,电商网站策划前言
情人节到了#xff0c;写一份爱心代码给喜欢的人呀
公式
首先我们介绍下爱心的公式的参数方程#xff1a; x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2co…前言
情人节到了写一份爱心代码给喜欢的人呀
公式
首先我们介绍下爱心的公式的参数方程 x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t) y13cos(t)−5cos(2t)−2cos(3t)−cos(4t)
根据这个公式我们可以实现基本的代码 首先使用 n p . l i n s p a c e ( a , b , n u m ) np.linspace(a, b, num) np.linspace(a,b,num) 这个函数生成 a到b区间内的num个数这些数作为参数t然后生成对应xy的值
t np.linspace(0, 2 * np.pi, 100)
x 16 * np.sin(t)**3
y 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)
然后我们将生成的点平铺在二维坐标上
plt.plot(x, y, colorred)
plt.title(Heart )
plt.axis(equal) # 保持坐标轴相等
plt.show()最终效果 完整代码
import matplotlib.pyplot as plt
import numpy as np# 生成爱心形状的数据点
t np.linspace(0, 2 * np.pi, 100)
x 16 * np.sin(t)**3
y 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)# 绘制爱心
plt.plot(x, y, colorred)
plt.title(Heart )
plt.axis(equal) # 保持坐标轴相等
plt.show()进阶
我们使用pygame创建一个界面在界面上随机生成不同颜色的爱心
初始化pygame:
# 初始化 Pygame
pygame.init()# 设置窗口大小
width, height 800, 600
screen pygame.display.set_mode((width, height))
pygame.display.set_caption(Random Hearts)编写绘制爱心的函数根据形参x,y确定位置color确定颜色
def draw_heart(x, y, color):# 生成爱心形状的直角坐标数据点t np.linspace(0, 2 * np.pi, 1000)heart_x x 16 * np.sin(t)**3heart_y y - (13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t))# 绘制爱心形状pygame.draw.lines(screen, color, False, list(zip(heart_x, heart_y)), 2)在主循环中一直生成随机的位置和颜色绘制pygame界面然后刷新显示
# 主循环
running True
while running:for event in pygame.event.get():if event.type pygame.QUIT:running False# 随机生成爱心的位置和颜色heart_x random.randint(0, width)heart_y random.randint(0, height)heart_color (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))# 在随机位置绘制不清空的爱心draw_heart(heart_x, heart_y, heart_color)# 刷新屏幕pygame.display.flip()# 控制帧率pygame.time.Clock().tick(1)效果
完整代码
import pygame
import sys
import random
import numpy as np# 初始化 Pygame
pygame.init()# 设置窗口大小
width, height 800, 600
screen pygame.display.set_mode((width, height))
pygame.display.set_caption(Random Hearts)def draw_heart(x, y, color):# 生成爱心形状的直角坐标数据点t np.linspace(0, 2 * np.pi, 1000)heart_x x 16 * np.sin(t)**3heart_y y - (13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t))# 绘制爱心形状pygame.draw.lines(screen, color, False, list(zip(heart_x, heart_y)), 2)# 主循环
running True
while running:for event in pygame.event.get():if event.type pygame.QUIT:running False# 随机生成爱心的位置和颜色heart_x random.randint(0, width)heart_y random.randint(0, height)heart_color (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))# 在随机位置绘制不清空的爱心draw_heart(heart_x, heart_y, heart_color)# 刷新屏幕pygame.display.flip()# 控制帧率pygame.time.Clock().tick(1)# 退出程序
pygame.quit()
sys.exit()