/* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; double MAX(2.5), pMAX(1.2*MAX); P cone(double r, double t) { return polar(r, t) + r*E_3; } domain R(P(0, 0), P(MAX, 2*M_PI), mesh(MAX, 120)); void slab(double ht) { fill(White()); rect(P(-MAX, -MAX, ht), P(MAX, MAX, ht)); nofill(); } void mk(const P& loc) { circle(loc, 0.025); } int main() { picture(P(-pMAX, 0), P(pMAX, pMAX), "3.6 x 1.8in"); begin(); P VIEWPT(4, -10, 2.5); camera.at(VIEWPT).range(20); double t0(M_PI/6), t1(0.5), // "cylindrical" coords of t' dist(norm(VIEWPT - 2*E_3)), angle(M_PI_2 - Asin(2.0/dist)), phi(Atan2(VIEWPT.x2(), VIEWPT.x1())), th0(phi + angle), th1(phi - angle); // angles of visible cone generators P O(0, 0, 0), p0(-1.5, -1.25, 0), v0(0.375, 0.25, 1), // posn, veloc of moving particle v2(polar(tanh(t1), t0) + E_3), // t' axis normalized to unit height v2n(cosh(t1)*v2), // same, Lorentz normalized ax2(polar(cosh(t1), t0) + sinh(t1)*E_3), // Lorentz perp to t' axis ax3(cis(t0 + M_PI_2)); arrow_inset(0.75); dash_size(6); bold(); dashed(); line(p0, p0 - v0); solid(); slab(0); arrow(O, MAX*E_1); arrow(O, MAX*E_2); line(O, E_3); line(O, v2); line(O, cone(1, th0)); // cone generators line(O, cone(1, th1)); dashed(); line(p0, p0 + v0); solid(); slab(1); plot(cone, R.slice1(1)); line(E_3, 2*E_3); line(v2, 2*v2); line(cone(1, th0), cone(2, th0)); line(cone(1, th1), cone(2, th1)); dashed(); line(p0 + v0, p0 + 2*v0); solid(); slab(2); plot(cone, R.slice1(2)); arrow(2*E_3, MAX*E_3); arrow(2*v2, MAX*v2); dashed(); line(p0 + 2*v0, p0 + MAX*v0); solid(); label(MAX*E_1, P(4, 0), "$x_{1}$", r); label(MAX*E_2, P(4, 0), "$x_{2}$", r); label(MAX*E_3, P(4, 0), "$t$", r); label(MAX*v2, P(4, 0), "$t'$", r); label(P(MAX, 0, 1), P(-2, -4), "$t = \\text{const.}$", br); plain(); arrow(O, MAX*E_2); line(O, cone(2, th0)); line(O, cone(2, th1)); line(O, 2*E_3); line(O, 2*v2); // boosted cone section ellipse(v2n, Cos(t0)*ax2 + Sin(t0)*ax3, -Sin(t0)*ax2 + Cos(t0)*ax3); dashed(); // particle path line(p0 - v0, p0); line(p0, p0 + v0); line(p0 + v0, p0 + 2*v0); line(p0 + 2*v0, p0 + MAX*v0); solid(); mk(p0); mk(p0 + v0); mk(p0 + 2*v0); mk(E_3); mk(2*E_3); mk(v2); mk(2*v2); camera.at(0, 0, 1).range(0); label(P(0.5*(xmin() + xmax()), ymin() - 1), P(0, -24), "\\textsc{Fig.~7.}", b); tikz_format(); end(); }