restart:
with(Maplets[Tools]): with(Maplets[Elements]): with(plots):
StartEngine();
PlotTan:=Maplet(onstartup = RunWindow(MAIN),
Window[MAIN](title="Plot Tangent Demo",
[ ["Type in a function of x, and an interval a..b for x."],
["Function:", TextField[func](width=25)],
["Interval:", TextField[interv](width=25)],
[ Button("Plot It", onclick=A1),
Button("Good Bye", Shutdown())]
]
),
Window[PlotIt](title="The Plot",
[ [Plotter[myplot](width=300, height=300)],
[ "Add the tangent line at the point x= ",
TextField[point](width=5)],
[ Button("Plot It", Evaluate(function = "plottan")),
Button("Good Bye", CloseWindow(PlotIt))]
]
),
Action[A1](RunWindow(PlotIt), Evaluate(function = "plotfunc"))
):
plotfunc:=proc()
global userfunc, userinterv, p1;
userfunc:=Get(thismaplet,func::anything):
userinterv:=Get(thismaplet,interv::range):
p1:=plot(userfunc, x=userinterv, thickness=5, color=green);
Set(myplot=p1)
end proc:
plottan:=proc()
global userfunc, userinterv, userpoint, p1, p2, duserfunc, tanfunc;
userpoint:=Get(thismaplet,point::realcons):
duserfunc:=diff(userfunc,x);
tanfunc:=subs(x=userpoint,userfunc)+subs(x=userpoint,duserfunc)*(x-userpoint);
p2:=plot(tanfunc, x=userinterv, thickness=10, color=blue);
Set(myplot=display(p1,p2))
end proc:
Maplets[Display]( PlotTan );