1/* -*-ePiX-*- */
2#include "epix.h"
3using namespace ePiX;
4
5// re cos(u+iv)
6P f(double u, double v)
7{
8  return P(u, v, 2*cosh(u)*Cos(v));
9}
10
11domain R(P(-1,-1), P(1,1), mesh(16,16));
12
13// RGB densities
14P color(double x, double y, double z)
15{
16  return P(Sin(x), -Sin(y), -Sin(x));
17}
18
19int main()
20{
21  picture(P(0,0), P(5,1), "5x1in");
22
23  begin();
24
25  camera.filter(CMYK_Neutral()); // convert colors to CMYK in output
26  grid(5,1);
27  camera.at(4,3,1);
28
29  plain(Red(1.6));
30
31  // Original
32  screen all(P(-1.5,0.5), P(1.5,3.5));
33  activate(all);
34  set_crop();
35
36  surface(f, R, color);
37  inset(all, P(0,0), P(1,1));
38
39  // Cyan
40  screen cyn(P(-1.5,0.5), P(1.5,3.5));
41  activate(cyn);
42  set_crop();
43  camera.filter(C_Process()); // get cyan layer
44
45  surface(f, R, color);
46  inset(cyn, P(1,0), P(2,1));
47
48  // Magenta
49  screen mgn(P(-1.5,0.5), P(1.5,3.5));
50  activate(mgn);
51  set_crop();
52  camera.filter(M_Process());
53
54  surface(f, R, color);
55  inset(mgn, P(2,0), P(3,1));
56
57  // Yellow
58  screen ylw(P(-1.5,0.5), P(1.5,3.5));
59  activate(ylw);
60  set_crop();
61  camera.filter(Y_Process());
62
63  surface(f, R, color);
64  inset(ylw, P(3,0), P(4,1));
65
66  // Black
67  screen blk(P(-1.5,0.5), P(1.5,3.5));
68  activate(blk);
69  set_crop();
70  camera.filter(K_Process());
71
72  surface(f, R, color);
73  inset(blk, P(4,0), P(5,1));
74
75  end();
76}
77