1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| (* initialisation graphique *)
#load "graphics.cma";;
Graphics.open_graph "";;
Graphics.set_color 0;;
(* definition du type point en 2D, de son constructeur et de ses accesseurs *)
type point = {x:int; y:int};;
let creer_point a b = {x=a; y=b};;
let tracerCarre a taille =
Graphics.set_color Graphics.red;
Graphics.fill_rect (a.x) (a.y) taille taille;
;;
let carre_central a taille = creer_point (a.x + (taille/3)) (a.y + (taille/3));;
let rec carrecursifs a taille = if taille < 2
then tracerCarre a taille
else
begin
tracerCarre a taille ;
carrecursifs ( carre_central a taille ) (taille*(1/3)) ;
carrecursifs a (taille*(1/3)) ;
carrecursifs (creer_point (a.x + ((2/3)*taille) )( a.y )) (taille*(1/3));
carrecursifs (creer_point (a.x + ((2/3)*taille) )( a.y + ((2/3)*taille))) (taille*(1/3));
carrecursifs (creer_point (a.x)(a.y+ ((2/3)*taille))) (taille*(1/3))
end ;;
(* val carrecursifs : point -> int -> unit = <fun> *)
(* Creation d'un point *)
let a = creer_point 0 0;;
let taille = 333 ;;
(* nettoyage de la fenetre graphique *)
Graphics.clear_graph();;
carrecursifs a taille;; |
Partager