summaryrefslogtreecommitdiff
path: root/graphics/epix/samples/extract.xp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/epix/samples/extract.xp')
-rw-r--r--graphics/epix/samples/extract.xp109
1 files changed, 0 insertions, 109 deletions
diff --git a/graphics/epix/samples/extract.xp b/graphics/epix/samples/extract.xp
deleted file mode 100644
index b061df18db..0000000000
--- a/graphics/epix/samples/extract.xp
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*-ePiX-*- */
-#include "epix.h"
-using namespace ePiX;
-
-// a benign function
-double phi(double x)
-{
- return x*x;
-}
-
-// and its derivative
-Deriv dphi(phi);
-
-// parameters defining an arbitrary line ell
-const double slope(-2);
-const double beta(0.5);
-
-const double ht(phi(beta));
-const double alpha(slope-dphi.eval(beta));
-
-const double eps(0.02); // size of extraction
-
-// a small perturbation to adjust the derivative
-double f(double x)
-{
- return x/(1+16384*x*x);
-}
-
-double gn(double x)
-{
- return f(alpha*(x-beta));
-}
-
-// phi's Evil Twin
-double psi(double x)
-{
- return phi(x) + gn(x);
-}
-
-// inset parameters
-const P mag_ctr(P(0.75, 0.2));
-const double mag_sz(0.125);
-
-int main()
-{
- picture(P(0,0), P(1,0.75), "4x3in");
-
- begin();
- set_crop();
-
- // two nearly-equal graphs, and the tangent to one of them
- plain(Blue());
- plot(psi, xmin(), beta-eps, 60);
- plot(psi, beta+eps, xmax(), 60);
- plot(psi, beta-eps, beta+eps, 60);
-
- pen(Green(0.6));
- Line(P(beta,phi(beta)), slope);
-
- bold(Red());
- plot(phi, xmin(), xmax(), 60);
- plain();
-
- // cut out a small neighborhood and magnify it
- screen mag(canvas().extract_ellipse(P(beta-eps, psi(beta)-eps),
- P(beta+eps, psi(beta)+eps)));
- mag.backing(Yellow(0.05));
- mag.border(Black(), "0.4pt");
-
- inset(mag, mag_ctr - mag_sz*P(1,1), mag_ctr + mag_sz*P(1,1));
-
- pen(Black());
- // axes
- line(P(xmin(),0), P(xmax(),0));
- line(P(0,ymin()), P(0,ymax()));
-
- // indicators
- line(P(beta,0), P(beta,phi(beta)), -20); // shorten slightly
- line(P(0,phi(beta)), P(beta,phi(beta)), -10);
-
- // zoom lines
- line(P(beta, phi(beta)), mag_ctr + polar(mag_sz, 2*M_PI/3), -20);
- line(P(beta, phi(beta)), mag_ctr + polar(mag_sz, 5*M_PI_4), -20);
-
- font_size("footnotesize");
- label(P(beta,0), P(0,-4), "$\\beta$", b);
- label(P(0,phi(beta)), P(-4,0), "$b$", l);
-
- // use mag_ctr to place inset labels
- red();
- label(P(beta+0.1,phi(beta+0.1)), P(-2,2), "$\\varphi$",tl);
- label(mag_ctr, P(0,6), "$\\varphi$",tr);
-
- blue();
- label(P(beta+0.1,psi(beta+0.1)), P(2,-2), "$\\psi$",br);
- label(mag_ctr, P(8,-2), "$\\psi$",br);
-
- green(0.6);
- label(P(beta-0.1,ht-0.1*slope), P(2,2), "$\\ell$",tr);
- label(mag_ctr, P(-12,20), "$\\ell$", bl);
-
- black();
- // a large label
- label_border(Blue(), "0.2pt");
- masklabel(P(0.5*(xmin()+xmax()), ymax()), P(0,0),
- "\\begin{minipage}{2.25in}A graph with unexpected tangent line\\end{minipage}", b);
-
- end();
-}