2

ロケットムービーで入力した角度に応じてこのロケットが上がるように、ラケットでこのコードに取り組んでいます。アニメのシーンでロケットが間違った方向に飛び続けているので、私の数学では何かがおかしいと思います。私は正確に何が間違っているのか理解できないようです。うまくいくように見える唯一の方向は 20 度です。ロケットの画像自体は 90 度の位置にあります。私が取り組んだ場所と画像の式を誰か助けてくれませんか? 何が悪いのかわからない。

御時間ありがとうございます。

#lang racket
(require 2htdp/image)
(require 2htdp/universe)
(require rackunit)

;; (make−takeoff angle) −> (−> natural−number/c image?)
;; angle : exact−integer?

(define make-takeoff
    (lambda (angle)
        (let ([side-length 400])
            (let ([the−background (square side-length "solid" "white")]
                  [the-rocket .]
                  [the-velocity (/ side-length 100)])
                (lambda (frame)
                    (place-image
                        (rotate angle the-rocket)
                        (- 375 (* (cos (- 90 angle)) (* frame the-velocity)))  
                        (- 375 (* (sin (- 90 angle)) (* frame the-velocity)))  
                        the−background))))))

;; (rocket−movie angle) −> natural−number/c
;; angle : exact−integer?
(define rocket-movie
    (lambda (angle)
        (animate (make-takeoff angle))))
4

2 に答える 2

4

衒学者であることを許してください、しかしあなたは本当にあなたの「離陸」機能をより小さな断片に分割する必要があります。特に、角度とフレームを受け入れる「rocket-x」関数を作成した場合は、そのテストケースを作成して、問題を自分で把握することができます。これを行う際に問題が発生した場合はお知らせください。

于 2012-09-17T21:49:39.550 に答える
1

注: cos関数とsin関数は、度ではなくラジアンで機能します。あなたの計算は度数を仮定しているように見えます.

(一方、rotateは数値が度単位であると仮定して機能します。そのため、注意してください: 数値は文脈によって異なる意味を持ちます。)

于 2012-09-19T19:08:30.990 に答える