From e216bfbe292b1cbf841fe3c2149ac44cac2c9d97 Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Fri, 16 Jan 2026 15:33:16 -0800 Subject: [PATCH] I am a genius and know how to code --- tinker/Makefile | 3 ++ tinker/cube | Bin 0 -> 87021 bytes tinker/cube.ml | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 tinker/Makefile create mode 100755 tinker/cube create mode 100644 tinker/cube.ml diff --git a/tinker/Makefile b/tinker/Makefile new file mode 100644 index 0000000..5d40463 --- /dev/null +++ b/tinker/Makefile @@ -0,0 +1,3 @@ +run: + ocamlfind ocamlc -package graphics -linkpkg cube.ml -o cube + ./cube diff --git a/tinker/cube b/tinker/cube new file mode 100755 index 0000000000000000000000000000000000000000..d46aee1a22fbdc08c2f7a7349a086f0096b6f620 GIT binary patch literal 87021 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 literal 0 HcmV?d00001 diff --git a/tinker/cube.ml b/tinker/cube.ml new file mode 100644 index 0000000..a7574a9 --- /dev/null +++ b/tinker/cube.ml @@ -0,0 +1,116 @@ +open Graphics;; + +let window_w = 800.;; +let window_h = 800.;; + +let screen_space (x, y) = + ( + int_of_float ((x +. 1.) /. 2. *. window_w), + int_of_float ((1. -. (y +. 1.) /. 2.) *. window_h) + );; + +let project (x, y, z) = + (x /. z, y /. z);; + +let rotate_y (x, y, z) angle = + let ox = x in + let oz = z in + ( + ox *. cos(angle) -. oz *. sin(angle), + y, + ox *. sin(angle) +. oz *. cos(angle) + );; + +let translate_z (x, y, z) dz = + (x, y, z +. dz);; + +(* CUBE *) +let vertecies = [ + (0.3, 0.3, 0.3); + (-0.3, 0.3, 0.3); + (-0.3, -0.3, 0.3); + ( 0.3, -0.3, 0.3); + (0.3, 0.3, -0.3); + (-0.3, 0.3, -0.3); + (-0.3, -0.3, -0.3); + (0.3, -0.3, -0.3) +];; + +let faces = [ + (0, 1, 2, 3); (* front *) + (4, 5, 6, 7); (* back *) + (0, 1, 5, 4); (* top *) + (2, 3, 7, 6) (* bottom *) +];; + +let draw_line (x1, y1) (x2, y2) = + moveto x1 y1; + lineto x2 y2;; + +let rec get_vertex v i = + match v with + | [] -> (0., 0., 0.) + | x :: xs -> + if i = 0 then x + else get_vertex xs (i - 1);; + +let draw_face (a, b, c, d) angle = + let va = (get_vertex vertecies a) in + let vb = (get_vertex vertecies b) in + let vc = (get_vertex vertecies c) in + let vd = (get_vertex vertecies d) in + + let va = rotate_y va angle in + let vb = rotate_y vb angle in + let vc = rotate_y vc angle in + let vd = rotate_y vd angle in + + let va = translate_z va 1.25 in + let vb = translate_z vb 1.25 in + let vc = translate_z vc 1.25 in + let vd = translate_z vd 1.25 in + + let va = project va in + let vb = project vb in + let vc = project vc in + let vd = project vd in + + let va = screen_space va in + let vb = screen_space vb in + let vc = screen_space vc in + let vd = screen_space vd in + + draw_line va vb; + draw_line vb vc; + draw_line vc vd; + draw_line vd va;; + +let rec iter_faces faces angle = + match faces with + | [] -> () + | (a, b, c, d) :: fs -> + draw_face (a, b, c, d) angle; + iter_faces fs angle;; + +let rec spin_cube angle = + clear_graph (); + + set_color (rgb 0 0 0); + fill_rect 0 0 800 800; + + set_color cyan; + + iter_faces faces angle; + + Graphics.synchronize (); + + spin_cube (angle +. 0.0001);; + +let () = + open_graph " 800x800+560+140"; + + auto_synchronize false; + + spin_cube 0.; + + close_graph ()