• Python 用大量小矩形来画曲线


     1 import sys, pygame, math
     2 
     3 pygame.init()
     4 screen = pygame.display.set_mode([640, 480])
     5 
     6 screen.fill([255, 255, 255])
     7 for x in range(0, 640):
     8     y = int(math.sin(x / 640.0 * 4 * math.pi) * 200 + 240)#y坐标
     9     pygame.draw.rect(screen, [0, 0, 0], [x, y, 1, 1], 1)#小矩形来画sinx
    10 
    11 pygame.display.flip()
    12 running = True
    13 while running:
    14     for event in pygame.event.get():
    15         if event.type == pygame.QUIT:
    16             running = False
    17 pygame.quit()

    如果线宽用0的话,什么都不会显示,因为这样的小矩形没有'中间部分' 来填充

    可以看到,上面的图是一个一个的点,点中间还存在空格,这是因为,在比较陡的地方,我们必须上移3个像素而向右只移动一个像素,而且我们画的是点,不是线

    下面是连接多个点的方法:

     1 import sys, pygame, math
     2 
     3 pygame.init()
     4 screen = pygame.display.set_mode([640, 480])
     5 plotPoint = []
     6 
     7 screen.fill([255, 255, 255])
     8 for x in range(0, 640):
     9     y = int(math.sin(x / 640.0 * 4 * math.pi) * 200 + 240)#y坐标
    10     plotPoint.append([x, y])
    11     
    12 pygame.draw.lines(screen, [0, 0, 0], False, plotPoint, 1)
    13 '''这里的五个参数作用:
    14 第一:画线的表面
    15 第二:颜色
    16 第三:是否要画一条线将最后一个点与第一个点相连接,使形状闭合。
    17 我们不希望正弦曲线闭合,所以参数为False
    18 第四:要连接的点的列表
    19 第五:线宽
    20 '''
    21 pygame.display.flip()
    22 running = True
    23 while running:
    24     for event in pygame.event.get():
    25         if event.type == pygame.QUIT:
    26             running = False
    27 pygame.quit()

  • 相关阅读:
    undefined与null的区别
    js 合并多个对象 Object.assign
    No 'Access-Control-Allow-Origin' Ajax跨域访问解决方案
    CSS3的REM设置字体大小
    延迟运行方法
    如何用 SQL Tuning Advisor (STA) 优化SQL语句
    Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句(原创)
    Oracle记录登录失败的触发器
    11g ASM新特性
    闪回事务(Flashback Transaction)
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/13797810.html
Copyright © 2020-2023  润新知