(* Programul deseneaza fractalul cruce in format SVG (Scalable vector graphics) http://en.wikipedia.org/wiki/Vicsek_fractal Compilati programul: ocamlc fisier.ml si apoi rulati ./a.out > patrat.svg (sub Windows, a.exe > patrat.svg ) Vizualizati fisierul SVG, de exemplu in browser *) open Printf let rec fig x y len = (* figură de latură len în punctul (x, y) *) if (len < 3.) then ( (* caz de baza: pătrat *) printf "M %.2f %.2f " x y; (* mută cursorul, punctul dat va fi un colț *) printf "h %.2f " len; (* linie orizontală *) printf "v %.2f " len; (* continuă cu linie verticală *) printf "h %.2f " (-. len); (* linie orizontală înapoi *) printf "v -%.2f " len; (* linie verticala înapoi *) ) else let l3 = len /. 3. in (* o treime de latură *) let l23 = 2. *. l3 in (* două treimi *) ( (* cinci figuri mai mici în colțuri și centru *) fig x y l3; fig (x +. l23) y l3; fig (x +. l3) (y +. l3) l3; fig x (y +. l23) l3; fig (x +. l23) (y +.l23) l3 ) let _ = ( print_endline "<?xml version=\"1.0\"?>"; (* antet fișier SVG *) print_endline "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">"; print_string "<path d=\""; (* desenarea *) fig 0. 0. 729.; print_endline "\"/>\n</svg>" )
This document was generated using caml2html