绘制一个具有动画效果的图标,要求如下: (1)绘制一条正弦曲线; (2)绘制一个红色圆点,该圆点最初位于正弦曲线的左端; (3)制作一个圆点沿曲线运动的动画,并时刻显示圆点的坐标位置
时间: 2024-06-08 13:07:12 浏览: 51
下面是一个基于Python的实现:
```python
import math
import pygame
# 初始化pygame
pygame.init()
# 设置窗口大小
size = (800, 600)
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("Sin Curve Animation")
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# 初始化参数
amplitude = 100 # 振幅
period = 200 # 周期
frequency = 0.01 # 频率
x_offset = 0 # x轴偏移量
# 渲染正弦曲线
def render_sin_curve():
points = []
for x in range(size[0]):
y = amplitude * math.sin(frequency * (x + x_offset) * math.pi) + size[1] / 2
points.append((x, y))
pygame.draw.lines(screen, WHITE, False, points, 2)
# 渲染圆点
def render_dot(x, y):
pygame.draw.circle(screen, RED, (int(x), int(y)), 5)
# 主循环
done = False
clock = pygame.time.Clock()
while not done:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# 清屏
screen.fill(BLACK)
# 渲染正弦曲线
render_sin_curve()
# 计算圆点位置
dot_x = x_offset % period
dot_y = amplitude * math.sin(frequency * (dot_x + x_offset) * math.pi) + size[1] / 2
# 渲染圆点
render_dot(dot_x, dot_y)
# 更新x轴偏移量
x_offset += 1
# 显示圆点坐标位置
font = pygame.font.Font(None, 36)
text = font.render("Dot Position: ({}, {})".format(int(dot_x), int(dot_y)), True, WHITE)
screen.blit(text, (10, 10))
# 刷新屏幕
pygame.display.flip()
# 控制帧率
clock.tick(60)
# 退出pygame
pygame.quit()
```
这个程序使用pygame库绘制了一个带有动画效果的正弦曲线和一个沿着曲线运动的圆点,并时刻显示圆点的坐标位置。你可以自己调整参数,来探索不同的效果。
阅读全文