我的动画地点图像程序出了什么问题?

时间:2012-09-17 21:33:30

标签: racket

我一直在用球拍制作这段​​代码,根据你在火箭电影中输入的角度使这个火箭上升。我觉得有些事情与我的数学有关,因为动画场景中的火箭一直朝着错误的方向前进。我似乎无法弄清楚到底出了什么问题。似乎工作的唯一方向是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))))

2 个答案:

答案 0 :(得分:4)

请原谅我迂腐,但你真的,真的需要将你的“制作 - 起飞”功能分解成更小的部分。特别是,如果您编写了一个接受角度和框架的“rocket-x”函数,您可以为它编写测试用例,并自己解决问题。如果您遇到任何麻烦,请告诉我。

答案 1 :(得分:1)

注意:cossin功能适用于弧度,而非度数。你的计算似乎假设了学位,这应该可以解释为什么你会看到奇怪的数值。

(另一方面,rotate确实使用数字,假设它们是度数。所以要小心:根据上下文,数字可能意味着不同的东西。)