#lang racket
(require 2htdp/universe 2htdp/image lang/posn)
(struct world (posn1 posn2 posn3 posn4))
(define *hoshida* .)
(define *background* (empty-scene 480 480))
(define (place-hoshida w)
(place-images (make-list 4 *hoshida*)
`(,(world-posn1 w) ,(world-posn2 w) ,(world-posn3 w) ,(world-posn4 w))
*background*))
(define (place-hoshida-on-tick w)
(let
((r
(exp (* 0+i
1/28))) (posns `(,(world-posn1 w) ,(world-posn2 w) ,(world-posn3 w) ,(world-posn4 w)))
(convert 240+240i))
(let ((z (map (lambda (i)
(+ (* r (- (+ (posn-x i) (* 0+i (posn-y i))) convert)) convert))
posns)))
(apply world
(map (lambda (x)
(make-posn (real-part x) (imag-part x))) z)))))
(big-bang (world (make-posn 360 240) ;; 座標初期値
(make-posn 240 360)
(make-posn 120 240)
(make-posn 240 120))
(on-tick place-hoshida-on-tick) ;; ここで単位時間毎に座標データを更新する
(to-draw place-hoshida))
I2xhbmcgcmFja2V0CgoocmVxdWlyZSAyaHRkcC91bml2ZXJzZSAyaHRkcC9pbWFnZSBsYW5nL3Bvc24pCgooc3RydWN0IHdvcmxkIChwb3NuMSBwb3NuMiBwb3NuMyBwb3NuNCkpCgooZGVmaW5lICpob3NoaWRhKiAuKQoKKGRlZmluZSAqYmFja2dyb3VuZCogKGVtcHR5LXNjZW5lIDQ4MCA0ODApKQoKKGRlZmluZSAocGxhY2UtaG9zaGlkYSB3KQogIChwbGFjZS1pbWFnZXMgKG1ha2UtbGlzdCA0ICpob3NoaWRhKikKICAgICAgICAgICAgICAgIGAoLCh3b3JsZC1wb3NuMSB3KSAsKHdvcmxkLXBvc24yIHcpICwod29ybGQtcG9zbjMgdykgLCh3b3JsZC1wb3NuNCB3KSkKICAgICAgICAgICAgICAgICpiYWNrZ3JvdW5kKikpCgooZGVmaW5lIChwbGFjZS1ob3NoaWRhLW9uLXRpY2sgdykKICAobGV0ICgociAoZXhwICgqIDAraSAxLzI4KSkpCiAgICAgICAgKHBvc25zIGAoLCh3b3JsZC1wb3NuMSB3KSAsKHdvcmxkLXBvc24yIHcpICwod29ybGQtcG9zbjMgdykgLCh3b3JsZC1wb3NuNCB3KSkpCiAgICAgICAgKGNvbnZlcnQgMjQwKzI0MGkpKQogICAgKGxldCAoKHogKG1hcCAobGFtYmRhIChpKQogICAgICAgICAgICAgICAgICAgICgrICgqIHIgKC0gKCsgKHBvc24teCBpKSAoKiAwK2kgKHBvc24teSBpKSkpIGNvbnZlcnQpKSBjb252ZXJ0KSkKICAgICAgICAgICAgICAgICAgcG9zbnMpKSkKICAgICAgKGFwcGx5IHdvcmxkCiAgICAgICAgICAgICAobWFwIChsYW1iZGEgKHgpCiAgICAgICAgICAgICAgICAgICAgKG1ha2UtcG9zbiAocmVhbC1wYXJ0IHgpIChpbWFnLXBhcnQgeCkpKSB6KSkpKSkKICAgICAgICAgICAgICAgICAgICAKCihiaWctYmFuZyAod29ybGQgKG1ha2UtcG9zbiAzNjAgMjQwKSA7OyDluqfmqJnliJ3mnJ/lgKQKICAgICAgICAgICAgICAgICAobWFrZS1wb3NuIDI0MCAzNjApCiAgICAgICAgICAgICAgICAgKG1ha2UtcG9zbiAxMjAgMjQwKQogICAgICAgICAgICAgICAgIChtYWtlLXBvc24gMjQwIDEyMCkpCiAgKG9uLXRpY2sgcGxhY2UtaG9zaGlkYS1vbi10aWNrKSA7OyDjgZPjgZPjgafljZjkvY3mmYLplpPmr47jgavluqfmqJnjg4fjg7zjgr/jgpLmm7TmlrDjgZnjgosKICAodG8tZHJhdyBwbGFjZS1ob3NoaWRhKSk=