File: densityplot.xp

package info (click to toggle)
epix 1.2.22-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,256 kB
  • sloc: cpp: 16,847; sh: 5,054; makefile: 159; lisp: 6
file content (44 lines) | stat: -rw-r--r-- 689 bytes parent folder | download | duplicates (9)
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(); 
}