File: ex6.ml

package info (click to toggle)
ocaml-gnuplot 0.8.3-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 508 kB
  • sloc: ml: 2,148; makefile: 185
file content (43 lines) | stat: -rw-r--r-- 1,321 bytes parent folder | download | duplicates (3)
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
41
42
43
(* 	$Id: ex6.ml,v 1.3 2004-11-22 19:54:26 chris_77 Exp $	 *)
module P = Gnuplot
open Parse_args

let () =
  let re_sq u v = (u *. u -. v *. v, 2. *. u *. v, u) in
  let im_sq u v = (u *. u -. v *. v, 2. *. u *. v, v) in
  let g = P.init ~xsize:800. ~ysize:400. ~nxsub:2 (device 1)
            ?offline:(offline 1) in
  P.box3 g;
  P.pen g 1;
  P.fxy_param g re_sq (-3.) 3. (-3.) 3.;
  P.adv g;
  P.box3 g;
  P.fxy_param g im_sq (-3.) 3. (-3.) 3.;
  P.close g

let pi = 4. *. atan 1.

let () =
  let torus x0 y0 z0 r0 r1 u v =
    let r = r0 -. r1 *. cos(v) in
    (x0 +. r *. cos(u),  y0 +. r *. sin(u),  z0 +. r1 *. sin(v)) in
  let torus2 x0 y0 z0 r0 r1 u v =
    let r = r0 -. r1 *. cos(v) in
    (x0 +. r1 *. sin(v),  y0 +. r *. cos(u),  z0 +. r *. sin(u)) in
  let g = P.init ~xsize:800. ~ysize:400. ~nxsub:2 (device 2)
            ?offline:(offline 2) in
  P.box3 g;
  P.pen g 1;
  P.fxy_param g (torus 0. 0. 0. 1. 0.3) 0. (2.*.pi) 0. (2.*.pi);
  P.fxy_param g (torus 2. 0. 0. 1. 0.3) 0. (2.*.pi) 0. (2.*.pi);
  P.pen g 2;
  P.fxy_param g (torus2 0. 1. 0. 1. 0.2) 0. (2.*.pi) 0. (2.*.pi);
  P.adv g;
  let moebius u v =
    let r = 2. -. v *. sin(u/.2.) in
    (r *. sin(u),  r *. cos(u),  v *. cos(0.5 *. u)) in
  P.pen g 0;
  P.box3 g;
  P.pen g 1;
  P.fxy_param g moebius 0. (2. *. pi) (-0.25) 0.25;
  P.close g