2012-09-17 44 views
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

原諒我迂腐,但你真的,真的需要打破你「做起飛」功能成小塊。特別是,如果你寫了一個接受角度和框架的「rocket-x」函數,你可以爲它編寫測試用例,並自己找出問題所在。如果你遇到任何麻煩,請告訴我。

+0

我認爲你是對的。我要給它一個鏡頭。如果我遇到任何問題,我會更新。謝謝。 –

+0

很高興聽到它! –

1

注意:cossin功能工作在弧度,而不是度。你的計算似乎假設度數,這應該解釋爲什麼你看到奇怪的值。

(在另一方面,rotate確實與假設它們在數度工作,所以只是小心:數字可能意味着不同的事情取決於具體的環境。)