Прежде всего, я хочу сказать, что английский не является моим родным языком, поэтому я сделаю несколько ошибок.Я сделал анимацию, чтобы получить графическое представление о том, как создается синусоида, но я не уверен, как U должен реализовать вектор точек, которые я использую для рисования синусоиды.
На самом деле, ясоздавая вектор из 1000 точек в начале программы, и на каждом следующем шаге я обновляю компонент "y" следующей точки, чтобы он соответствовал координатам "главной точки" на моем круге.Я думал о создании пустого вектора, чтобы я мог добавить одну точку на каждом шаге и удалить первую точку, когда он будет за кадром, но я не уверен в этом.
(define dot%
(class object%
(init-field (n 0))
(define dot-size 3)
(define birth? #f)
(define y 0)
(define x 500)
(define/public (sety! new-y)
(set! y new-y)
(set! birth? #t))
(define/public (update-dot)
(if (equal? birth? #t) (set! x (+ x 1)) #f))
(define/public (draw-dot dc)
(send dc set-pen RED-PEN)
(send dc draw-ellipse x y dot-size dot-size))
(super-new)))
(define VDOTS
(build-vector nb-dots (lambda (i) (new dot% (n i)))))
Вот изображениечто показывает результат: