Question
DR RACKET HELP First make sure that you require the 2htdp/image and 2htdp/universe libraries. Your program will animate a rocket fired with an initial speed
DR RACKET HELP
First make sure that you require the 2htdp/image and 2htdp/universe libraries.
Your program will animate a rocket fired with an initial speed init-speed and initial angle to the horizontal init-angle.
Exercise 1 Define init-speed and init-angle as program variables. Use an initial speed of 1 and an initial angle of pi/4 to start. Once your program is running, you should try using different values to see how your animation behaves. Note here that we are using an angle specified in radians.
Since only the initial speed will be specified, you will need to calculate the x and y components of the initial velocity. These may be calculated via
init-x-vel = init-speed * cos(init-angle) |
init-y-vel = init-speed * sin(init-angle) |
Exercise 2 Define the initial vertical velocity init-x-vel and the initial horizontal velocity init-y-velusing the initial speed init-speed and the initial angle init-angle. We define the initial speed and velocity components (horizontal and vertical) as numbers rather than functions because they do not change over time.
The rocket experiences a gravitational acceleration in the vertical direction. Therefore, the vertical position of the rocket is this function of the time t:
vertical position = init-y-vel * t - 1/2 * 0.002 * t * t |
where init-y-vel is the initial velocity in the vertical direction, and 0.002 is the gravitational acceleration, which is a constant.
Exercise 3 Design a function y-pos which calculates the vertical position as a function of time t. Test your new function to make sure that (y-pos 0) produces 0.
The rocket does not experience any acceleration in the horizontal direction. Therefore, it has constant horizontal velocity, and the horizontal position is a simpler function of the time t:
horizontal position = init-x-vel * t |
Exercise 4 Design a function x-pos that calculates the horizontal position as a function of time t. Test your new function to make sure that (x-pos 0) produces 0.
Exercise 5 Design a function draw-sprite that draws a sprite on the screen. This function should be called draw-sprite and take two inputs, the horizontal position and the height. The term sprite is commonly used in computer graphics to refer to an image that moves around the screen. You may use any small image of your choice, such as a small circle, or even the rocket image. Remember, the Racket system specifies the Y position from the top down, and the vertical position you calculated above specifies the vertical position starting at the bottom, so you will need to convert your calculated height into a Y position that the Racket place-image function can understand. This conversion can be performed as follows:
y = scene-height - h |
where scene-height is the height of your scene, and h is the height, or vertical position from the bottom of the object you wish to draw. You should use the place-image to place an image on a scene that you create using empty-scene. A scene size of 500 wide by 200 tall should work well for the numbers provided here. It may be useful to test out your sprite drawing function using the interaction window.
Test your new function to make sure that (draw-sprite 0 0) produces an image that places the rocket in the lower-left corner.
Exercise 6 Finally, combine all of these functions together into a single function launch that draws an image at the correct horizontal and vertical positions, as a function of time t.
Your definition of launch should not mention multiplication (*) or subtraction (-) directly anywhere. Test it to make sure that (launch 0) produces an image that places the rocket in the lower-left corner.
Use your launch function with the animate we discussed in class to produce an animation of a rocket launching with an initial angle to the horizontal and an initial speed.
You should see your rocket starting off at the lower left. It should then move up and right, and eventually, it should fall, but continue moving right, and eventually move off your scene.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started