楕円座標系をasymptoteで描いてみる.

どうもxiのラベル付けがうまくない.

あと, point(real, real)の意味を理解していない.

import graph;

size(0,200);

defaultpen(fontsize(9));

real c=sqrt(1.0**2-0.5**2); // sqrt(a^2 - b^2)

real x(real xi, real eta) { return c*cosh(xi)*cos(eta); }
real y(real xi, real eta) { return c*sinh(xi)*sin(eta); }

real xi_min = 0;
real xi_max = 1.25;

real [] xi_ary={xi_min, 0.1, 0.2, 0.5, 0.75, 1.0, xi_max };
for(int i=0; i < xi_ary.length; ++i) {
  draw(graph(new real(real eta) {return x(xi_ary[i], eta);},
	     new real(real eta) {return y(xi_ary[i], eta);},
		0,2pi));
}

// sequence(n)は 0,1,2,..,n-1な配列を返す.
int eta_size = 12;
real [] eta_ary=sequence(eta_size)/eta_size*2pi;
for(int i=0; i < eta_ary.length; ++i) {
  draw(graph(new real(real xi) {return x(xi, eta_ary[i]);},
	     new real(real xi) {return y(xi, eta_ary[i]);},
	     xi_min,xi_max+0.2));
}

real xi0 = 0.8;
label("$\eta=0$",point((x(xi0,0),y(xi0,0))),SE);
label("$\displaystyle{\eta=\frac{\pi}{6}}$",point((x(xi0,pi/6),y(xi0,pi/6))),0.5E);
label("$\displaystyle{\eta=\frac{\pi}{3}}$",point((x(xi0,pi/3),y(xi0,pi/3))));
label("$\displaystyle{\eta=\frac{\pi}{2}}$",point((x(xi0,pi/2),y(xi0,pi/2))),NE);
label("$\displaystyle{\eta=\frac{2}{3}\pi}$",point((x(xi0,2pi/3),y(xi0,2pi/3))));
label("$\displaystyle{\eta=\frac{5}{6}\pi}$",point((x(xi0,5pi/6),y(xi0,5pi/6))),W);
label("$\displaystyle{\eta=\pi}$",point((x(xi0,pi),y(xi0,pi))),SW);
label("$\displaystyle{\eta=\frac{7}{6}\pi}$",point((x(xi0,7pi/6),y(xi0,7pi/6))),W);
label("$\displaystyle{\eta=\frac{4}{3}\pi}$",point((x(xi0,8pi/6),y(xi0,8pi/6))),0.2W);
label("$\displaystyle{\eta=\frac{3}{2}\pi}$",point((x(xi0,9pi/6),y(xi0,9pi/6))),SW);
label("$\displaystyle{\eta=\frac{5}{3}\pi}$",point((x(xi0,10pi/6),y(xi0,10pi/6))),E);
label("$\displaystyle{\eta=\frac{11}{6}\pi}$",point((x(xi0,11pi/6),y(xi0,11pi/6))),E);

real eta0 = 0;
label("$\xi=0.5$",point((x(0.5,eta0),y(0.5,eta0))),NW);
label("$\xi=1$",point((x(1,eta0),y(1,eta0))),NE);