summaryrefslogtreecommitdiff
path: root/graphics/epix/samples/densityplot.xp
blob: 51ef671cc6eb6d3b2153d58317dba2106deba3a9 (plain)
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
44
/* -*-ePiX-*- */
#include <epix.h>
using namespace ePiX;

const int MAX(18);

// basic circular wave
double ripple(double u, double v)
{
  return pow(Cos(0.5*sqrt(u*u+v*v)),2);
}

// superposition
double f(double u, double v)
{
  return 0.25*(1+ripple(u, v-10) + ripple(u, v+10));
}

// f as a parametric surface
P F(double u, double v)
{
  return P(u, v, f(u,v));
}

// height-dependent coloring
P color(double u, double v, double w)
{
  return P(0.2+0.8*w, 0.3, 0.8 - 0.6*w);
}

domain R(P(-MAX,-MAX), P(MAX,MAX), mesh(2*MAX, 2*MAX));

int main()
{
  picture(P(-MAX,-MAX), P(MAX,MAX), "3x3in");

  begin();

  pen(Magenta(1.4), 0.2);
  surface(F, R, color);

  pst_format();
  end(); 
}