/* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; P O(0,0); double rad(0.4); double theta(const P& tail, const P& head) { P tmp(head - tail); return Atan2(tmp.x2(), tmp.x1()); } void ray(const P& tail, const P& head, double t) { line(tail, head + t*(head - tail)); } int main() { picture(P(0,-1), P(5,1.6), "5 x 2.6in"); begin(); degrees(); bold(); P A1(0.5,0.5), B1(1.5,1.5), C1(B1.x1(),A1.x2()), A1p(A1&E_1), B1p(B1&E_1); P A2(2,-0.75), B2(3, 1.25), C2(B2.x1(),A2.x2()), A2p(A2&E_1), B2p(B2&E_1); P A3(4.5,0.6),B3(3.5,1.6), C3(B3.x1(),A3.x2()), A3p(A3&E_1), B3p(B3&E_1); line(P(xmin(),0), P(xmax(),0), 10); line(A1p, A1); line(A1, B1); line(B1, B1p); line(A2p, A2); line(A2, B2); line(B2, B2p); line(A3p, A3); line(A3, B3); line(B3, B3p); dashed(); dash_size(6); ray(A1, C1, 0.3); ray(A2, C2, 0); ray(C3, A3, 0.6); line(B2, C2); ellipse(A1, rad*E_1, rad*E_2, 0, theta(A1, B1), 4); ellipse(A2, rad*E_1, rad*E_2, 0, theta(A2, B2), 4); ellipse(A3, rad*E_1, rad*E_2, 0, theta(A3, B3), 8); label(P(xmin(),0), P(0,-4), "$X'$", b); label(P(xmax(),0), P(0,-4), "$X$", b); label(A1p, P(0,-4), "$A'$", b); label(A2p, P(0, 2), "$A'$", t); label(A3p, P(0,-4), "$A'$", b); label(B1p, P(0,-4), "$B'$", b); label(B2p, P(0,-4), "$B'$", br); label(B3p, P(0,-4), "$B'$", b); label(A1, P(-2,2), "$A$", tl); label(A2, P(0,-4), "$A$", b); label(A3, P(2,-4), "$A$", br); label(B1, P(0,2), "$B$", t); label(B2, P(0,2), "$B$", t); label(B3, P(0,2), "$B$", t); label(C1, P(2, 2), "$C$", tr); label(C2, P(2,-2), "$C$", br); tikz_format(); end(); }