/* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; double f(double t) { return 0.25*(1-0.25*Sin(2*M_PI*t)+0.75*exp(t)); } P fy(double t) { return P(t, -f(t), 0); } P fz(double t) { return P(t, 0, f(t)); } int main() { bounding_box(P(-2,-2),P(2,2)); unitlength("1in"); picture(5,5); begin(); grid(); double x_0=0.7, x_tmp; label(P(0.5*(x_min+x_max), y_min), P(0,4), "Volume $=\\displaystyle\\pi\\int_a^b f(x)^2\\,dx$",t); camera.at(P(2.5,-2.5,1)); camera.look_at(P(0.5,0,0)); camera.focus(5); blue(); arrow(P(0,0,0), P(0,0,0.75)); label(P(0,0,0.75), P(0,4), "$y$",t); line(P(0,0,0), P(x_0,0,0)); black(); line(P(0,-1,0), P(0,0,0)); line(P(x_0,-1,0), P(x_0,0,0)); label(P(0,-1,0), P(-4,-2), "$a$", bl); label(P(x_0,-1,0), P(-4,-2), "$x$", bl); // label(P(1,f(1),0), P(0,-4), "$y=f(x)$", b); gray(0.1); font_size("footnotesize"); circle section; // fill(); // gray(0); for (int i=0; i <= 20; ++i) { x_tmp = 0.05*i; // if (fabs(x_tmp-x_0) < 0.001) if (i == 14) //x_tmp==x_0) fill(); if (i == 0) pen(1.5); section=circle(P(x_tmp,0,0), f(x_tmp), E_1); section.draw(); // label(middle, P(-24,0), "$A(x)=\\pi f(x)^2$", c); if (i == 14) //x_tmp==x_0) { fill(false); bold(); red(); section=circle(P(x_tmp,0,0), f(x_tmp), E_1); section.draw(); plain(); black(); } if (i == 0) plain(); /* blue(); line(P(x_tmp,0,0), fz(x_tmp)); line(P(x_tmp+0.025,0,0), fz(x_tmp+0.025)); black(); */ } line(P(1,-1,0), P(1,0,0)); label(P(1,-1,0), P(-4,-2), "$b$", bl); dashed(); red(); section=circle(P(x_0,0,0), f(x_0), E_1); section.draw(); solid(); arrow(P(x_0,0,1), fz(x_0), P(0,4), "$A(x)=\\pi f(x)^2$", t, 0.5); black(); pen(1.5); // plot(f, x_0, 1, 24); plot(fy, 0, 1, 40); section=circle(P(1,0,0), f(1), E_1); section.draw(); blue(); plot(fz, 0, 1, 24); plain(); line(P(x_0,0,0), P(1.25,0,0)); line(P(1,0,0), fz(1)); // masklabel(P(1.5,0,0), P(6,-2), "$x$", r); end(); }