/* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; void ray(const P& tail, const P& head, double t = 0) { line(tail, tail + (1 + 0.01*t)*(head - tail)); } double f(double t) { return -0.5 + 0.25*t + 0.25*exp(0.5*t); } Deriv df(f); P F(double t) { return P(t, f(t)); } int main() { picture(P(0, 0), P(4, 2), "4 x 2in"); begin(); double mP(3.25), mQ(mP - 1); P O(0, 0), pP(F(mP)), pQ(F(mQ)), pT(pP - pP.x2()*P(1.0/df.eval(mP), 1)), pN(pQ & E_1), pM(pP & E_1); double mA(pT.x1()); bold(); line(P(xmin(), 0), P(xmax(), 0)); line(P(0, ymin()), P(0, ymax())); plot(F, mA, mP + 0.5, 40); ray(pT, pP, 30); line(pN, pQ); line(pM, pP); label(O, P(0, -4), "$O$", b); label(pQ, P(0, 2), "$Q$", tl); label(pP - P(1, df.eval(mP)), P(2, -2), "$Q'$", br); label(pP, P(0, 2), "$P$", tl); label(pP, P(2, -2), "$(x, y)$", br); label(F(mA), P(0, 2), "$A$", tl); label(pT, P(0, -4), "$T$", b); label(pN, P(0, -4), "$N$", b); label(pM, P(0, -4), "$M$", b); label(P(xmax(), 0), P(0 ,-4), "$X$", b); label(P(0, ymax()), P(-2, 0), "$Y$", l); tikz_format(); end(); }