let transd delta teta = delta -. 1.5 let transt delta teta = teta -. 1. let cartesian_of_polar (radius, teta) = radius *. cos(teta), radius *. sin(teta) let rec draw delta teta = let x, y = cartesian_of_polar (delta, teta) in let x', y' = truncate x, truncate y in let delta', teta' = transd delta teta, transt delta teta in if delta <= 0.0 then () else begin Graphics.rlineto x' y'; draw delta' teta'; end let rec halt() = try ignore(Graphics.wait_next_event []); halt() with Graphics.Graphic_failure _ -> Printf.printf "Saindo..\n%!" let _ = Graphics.open_graph ""; Graphics.moveto (Graphics.size_x() / 2) (Graphics.size_y() / 2); draw 100. 45.0; Printf.printf "Passou! :)\n%!"; halt()