Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* type used *)
- type t_point = {x : float; y : float};;
- type t_vector = {x : float; y : float};;
- type t_ball = {position : t_vector; speed : t_vector};;
- let sum_vector(vector_1, vector_2 : t_vector * t_vector) : t_vector =
- {x = vector_1.x +. vector_2.x; y = vector_1.y +. vector_2.y}
- ;;
- let init_ball(height, speed : float * t_vector) : t_ball =
- let init_point : t_vector = {x = 0.; y = height} in {position = init_point; speed = speed}
- ;;
- let gravity : t_vector = {x = 0.; y = -9.80665};;
- let rec compute_next_speed(ball, t : t_ball * int) : t_vector =
- if t = 0
- then ball.speed
- else
- sum_vector(compute_next_speed(ball, t-1), gravity)
- ;;
- let ball : t_ball = init_ball(10., {x = 5.; y = 50.});;
- let rec compute_next_pos(ball , t: t_ball * int) : t_vector =
- if t = 0
- then ball.position
- else
- let speed1 : t_vector = compute_next_speed(ball, t-1) in
- let speed2 : t_vector = compute_next_speed(ball, t) in
- sum_vector(compute_next_pos(ball, t-1), {x = (speed1.x +. speed2.x) /. 2.; y = (speed1.y +. speed2.y) /. 2.})
- ;;
- #trace compute_next_speed;;
- #trace compute_next_pos;;
- compute_next_pos(ball, 4);;
- let rec compute_end_point(ball, t : t_ball * int) : t_vector =
- let pos : t_vector = compute_next_pos(ball, t) in
- if pos.y < 0.
- then compute_next_pos(ball, t)
- else
- compute_end_point(ball, t+1)
- ;;
- compute_end_point(ball, 0);;
- Écrivez un message...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement