rzyzzxw 发表于 2019-2-15 14:49:12

【数学之美】圆和正弦,动起来

本帖最后由 rzyzzxw 于 2019-2-15 15:17 编辑

【本项目程序来自文杰工程师】


最新版本

程序代码


from mpython import *
from machine import Timer
import math

def upRange(start, stop, step):
    while start <= stop:
      yield start
      start += abs(step)

def downRange(start, stop, step):
    while start >= stop:
      yield start
      start -= abs(step)

def timer1_tick(_):
    global Dy, Dx, i, j, my_list, _item
    oled.fill_rect(48, 0, 80, 64, 0)
    oled.hline(48, 32, 80, 1)
    oled.vline(48, 8, 50, 1)
    j_end = int(len(my_list))
    for j in (1 <= j_end) and upRange(1, j_end, 1) or downRange(1, j_end, 1):
      oled.pixel(((len(my_list) + 50) - j), my_list[(j - 1)], 1)

tim1 = Timer(1)

def add_to_list(_item):
    global Dy, Dx, i, j, my_list
    my_list.append(_item)
    if len(my_list) > 72:
      my_list.pop(0)


my_list = []
oled.fill(0)
tim1.init(period=100, mode=Timer.PERIODIC, callback=timer1_tick)
while True:
    for i in range(0, 361, 5):
      oled.fill_rect(0, 0, 47, 64, 0)
      oled.circle(20, 32, 20, 1)
      Dx = int((20 + math.cos(math.radians(i)) * 20))
      Dy = int((32 - math.sin(math.radians(i)) * 20))
      oled.line(20, 32, Dx, Dy, 1)
      oled.line(Dx, Dy, 46, Dy, 1)
      oled.show()
      add_to_list(Dy)

图形化程序

自定义函数中的列表为移动的正弦准备

定时器部分是随圆上的点移动的正弦波

重复执行部分是圆上运动的的点及连杆

改了下程序
做成这样


一颗爱心
献给你



风悠扬0539 发表于 2022-6-1 07:13:55

确实漂亮之至
页: [1]
查看完整版本: 【数学之美】圆和正弦,动起来