\documentclass{article}
\usepackage{amsmath}
\usepackage[%
    web={pro,tight,usesf},
    eforms,exerquiz,dljslib={ImplMulti},
    graphicxsp={showembeds}
]{aeb_pro}
\usepackage{acroflex}
\usepackage{wrapfig}

\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom
\screensize{5in}{5.5in}             % height, width dimensions


\DeclareDocInfo
{
    title=\texorpdfstring{{\AcroFLeX}}{AcroFleX} Graphing System,
    author=D. P. Story,
    university=Acro\negthinspace\TeX.Net,
    email=dpstory@acrotex.net,
    subject=Demo of the acroflex and the rmannot package,
    keywords={Adobe Acrobat, JavaScript, Adobe FLEX 3, ActionScript},
    talksite=\url{http://www.acrotex.net},
    talkdate={July 2008},
    copyrightStatus=True,
    copyrightNotice={Copyright (C) \the\year, D. P. Story},
    copyrightInfoURL=http://www.acrotex.net
}
\talkdateLabel{Published:}

\setWindowOptions{showtitle}

\requiredVersionMsg{%
    Version 9 required: This document may be viewed, but version 9
    of Acrobat/Adobe Reader is required to view the rich media
    annotations present in this document.}
\requiredVersionMsgRedirect{%
    Version 9 required: This document may be viewed, but version 9
    of Acrobat/Adobe Reader is required to view the rich media
    annotations present in this document.}
\requiresVersion[warnonly]{9}

\def\AcroTeX{Acro\!\TeX}
\def\myURL{http://www.math.uakron.edu/\string~dpstory}
%
% The following definitions are for the rmannot package.
% The \saveNamedPath associates the name AcroAd with the
% path to a Flash animation, Acro_Advertiser.swf.
% The two \makePoster definitions are for the posters of the
% rich media annotations. The first for the animation on page 1
% and the second for all the AcroFlex graphing screens.
\newcommand{\myRMFiles}{C:/Users/Public/Documents/My TeX Files/%
    tex/latex/aeb/aebpro/rmannot/RMfiles}
\saveNamedPath{AcroAd}{\myRMFiles/Acro_Advertiser.swf}
%
% See the rmannot documentation. You can create your own
% poster graphic and declare it in the preamble.
%
\makePoster[hiresbb]{aflogo}{aflogo}
\makePoster[hiresbb]{AcroAd_poster}{AcroAd_poster}

\parindent=0pt
\pagestyle{empty}   %\previewtrue
\def\graphAndControls{\kern0pt\noindent
    \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\\[1ex]
    \makebox[\hScreenGraph][l]{%
        \savedelSelBtn[\textSize{7}\CA{S}]{9bp}{11bp}\kern1bp
        \functionSelect{50bp}{11bp}\hfill
        \funcInputField{\hScreenGraph-50bp-6bp-9bp}{11bp}%
    }\\[1ex]
    \makebox[\hScreenGraph][c]{\scriptsize
        \graphBtn[\textSize{7}]{}{9bp}\kern1pt
        \graphClrBtn[\textSize{7}]{}{9bp}\hfill
        \hShiftL{\raisebox{1bp}{\reflectbox{\ding{220}}}}\,%
        \vShiftU{\raisebox{1bp}{\rotatebox{90}{\ding{220}}}}\,\,%
        \amtShift[\textSize{7}]{12bp}{9bp}\,\,%
        \vShiftD{\raisebox{1bp}{\rotatebox[origin=c]{-90}{\ding{220}}}}
        \hShiftR{\raisebox{1bp}{\ding{220}}}\enspace
        \hfill\zoomInOut[\textSize{7}]{}{9bp}%
    }\\[1pt]%
    \makebox[\hScreenGraph][l]{\scriptsize
        $x = $ \strut\domMin[\textSize{7}]{36bp}{9bp}\ldots
            \domMax[\textSize{7}]{36bp}{9bp}\hfill
        $n = $\numPoints[\textSize{7}]{16bp}{9bp}
    }\\[1pt]%
    \makebox[\hScreenGraph][l]{\scriptsize
        $y = $ \rngMin[\textSize{7}]{36bp}{9bp}\ldots
            \rngMax[\textSize{7}]{36bp}{9bp}%
    }\\[1pt]%%
    \makebox[\hScreenGraph][l]{\scriptsize
        $t = $ \strut\domMinP[\textSize{7}]{36bp}{9bp}\ldots
            \domMaxP[\textSize{7}]{36bp}{9bp}%
    }
\par
}
%
% Display an advertisement on the opening page through the
% \optionalPageMatter command.
%
\optionalPageMatter{%
\begin{center}
\begin{minipage}{.7\linewidth}
    \resizebox{\linewidth}{!}{%
        \rmAnnot[poster=AcroAd_poster,enabled=pageopen]{612bp}{265bp}{AcroAd}}%
\end{minipage}
\end{center}
}

\begin{document}

\maketitle

\parskip6pt
\begin{center}
    \large\bfseries\color{blue} What is {\AcroFLeX}?
\end{center}

The word \textbf{\AcroFLeX} is meant to convey a merging of two computer technologies:
 \begin{itemize}
 \item \textbf{Acro}: connotes both \textbf{Adobe Acrobat} (\textbf{Adobe Reader})
  and \textbf{{Acro\negthinspace\TeX}} (as in the
 \textbf{{Acro\negthinspace\TeX} eDucation Bundle} or, just \textbf{AeB}).
 \item \textbf{F\kern-.1667em\lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@}: connotes
       \textbf{Adobe FLEX 3}. FLEX 3 is used to create SWF files to interact with the user.
       In the case of graphing, plotting information is passed from Acrobat, via JavaScript,
       to the Flash widget. ActionScript takes the data, plots the points provided, and
       connects them with a smooth curve.
 \end{itemize}

\textbf{\textcolor{blue}{{\AcroFLeX} by Acro\!\TeX:}} This graphing
system and this demonstration file were developed by D.~P. Story
using the \href{http://www.ctan.org/pkg/acrotex}{{Acro\!\TeX} eDucation
Bundle}, \href{http://www.adobe.com/products/acrobat/}
{$\text{Adobe}^{\text{\tiny\circledR}}$
$\text{Acrobat}^{\text{\tiny\circledR}}$~9 Pro}, and
\href{http://www.adobe.com/products/flex/}{$\text{Adobe}^{\text{\tiny\circledR}}$
$\text{FLEX}^{\text{\tiny TM}}$~3}.

Acrobat 9 Pro introduces the rich media annotation that plays FLV
movies and SWF files natively. Acrobat also provides a scripting
bridge between JavaScript for Acrobat, and ActionScript, the
scripting language of Flash player. This bridge enables the PDF and
the Flash widget, embedded in the rich media annotation, to
communicate. The scripting bridge opens up wonderful opportunities
for application to the education sector. The graphing of {\AcroFLeX}
is one such application of the new PDF-Flash connection to
education.

\textbf{{\AcroFLeX}} uses the commercial product Adobe FLEX
Builder~3 and   FLEX~3 SDK to produce Flash widgets, and the AeB to
create PDF documents with appropriate JavaScript to communicate with
the Flash widget. FLEX Builder~3 is currently free for students and
educators, the FLEX 3 SDK is free to all.

\newpage
\parskip0pt

% Basic parameters. These are the graphing screen dimensions you wish
% for the AcroFleX graphing widget, and the \graphName is the base name used by
% all the supporting components to the graphing screen.

\dimScreenGraph{186bp}{186bp*3/4}
\graphName{graph1}

\begin{center}\bfseries\Large\color{blue}
    {\AcroFLeX} by {\AcroTeX}
\end{center}

\medskip
The first goal in {\AcroFLeX} development was to build an interactive graphing
screen educators could  use in their PDFs.
\medskip

\begin{minipage}[t]{\hScreenGraph + 10bp}
%
% Insert the \graphScreen with all possible controls. Plot data entered by the
% user is interactive mode.
\graphAndControls
\medskip
%
% Pass plot data to this graphing screen, and allow user to interact with it.
%
\makebox[\linewidth][c]{\textbf{Populate Mode}}
Parametric Equations: \sgraphLink{xInterval={[-1,1]},yInterval={[-1,1]},tInterval={[0,2*pi]},
    points=40,populate=true}{cos(t);sin(t)}{$x=\cos(t)$; $y=\sin(t)$}\\[1ex]
Polar Function: \sgraphLink{type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2]},tInterval={[0,2*pi]},
    points=60,populate=true}{1+sin(t)}{$r = 1 + \sin(\theta)$ }
\end{minipage}\hfill
\begin{minipage}[t]{\linewidth - \hScreenGraph - 10bp}\small\par
\textbf{\textcolor{red}{Instructions:}} This graphing system can graph
a function of $x$, a pair of parametric functions of $t$,
or a polar function of $t$.
\begin{questions}
    \item For a function of $x$, enter an algebraic expression to be graphed, e.g.,
        \verb!3x^2-1!, \verb!4sin(2x)!, \verb!ln(x)!,
        \verb!e^(x+1)!. For parametric equations, two functions of
        $t$ separated by a semicolon (;) e.g.,
        \texttt{cos(t);sin(t)}. For a polar function, enter a single
        expression that is a function of $t$, e.g.,
        \texttt{1+sin(t)}.
    \item Set the graph viewing window: The range of the horizontal
        axis ($x$-axis) and range of the vertical axis ($y$-axis).
        For parametric plotting, set the range of the $t$ variable.
    \item Enter the number of points, $n$, to plot.
    \item Click the \textsf{Graph It!} button.
    \item Shift the viewing window horizontally or vertical;
    or zoom in or out.
    \item Click \texttt{Clear} to clear the plot; use
         \textsf{shift-click} to deactivate the graphing screen.
\end{questions}
\end{minipage}

\def\DomX{[0,2pi]}\def\DomY{[-1,1+.2]}

%\end{document}

\newpage
\graphName{graph2}
\begin{center}
    {\large\textbf{\textcolor{blue}{Graphing Predefined Functions}}}\\[3ex]
    \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip
    \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}}
\end{center}

\begin{center}
    \rule{.67\linewidth}{.4pt}
\end{center}
The document author, that's you, can prepare some functions for the student to view:
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$},
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$},
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, and
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}.
All functions are graphed over the interval
$[\,0, 2\pi\,]$. Let's view a graph with a vertical asymptote, shall we?
Try \sgraphLink{xInterval={[.5,1.5]},yInterval={[-20,20]},points=200}{1/(x-1)}{$y = 1/(x-1)$}
and \sgraphLink{xInterval={[0,2]},yInterval={[0,20]},points=200}{1/(x-1)^2}{$y = 1/(x-1)^2$}.

\smallskip
\begin{center}
    \rule{.67\linewidth}{.4pt}
\end{center}
\begin{shortquiz}
What type of symmetry does the \sgraphLink{xInterval={[-pi,pi]},yInterval={[-1,1]},
points=40}{sin(x)}{function}, graphed above, have?
\begin{answers}{3}
\Ans0 $x$-axis symmetry & \Ans0 $y$-axis symmetry & \Ans1 origin symmetry
\end{answers}
\end{shortquiz}

\newpage
\graphName{graph3}

\begin{center}
    {\large\textbf{\textcolor{blue}{Multiple Curves and Plots}}}\\[3ex]
    \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip
    \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}}
\end{center}

\smallskip
\begin{center}
    \rule{.67\linewidth}{.4pt}
\end{center}

Plot multiple curves using predefined functions:
\begin{itemize}
    \item \sgraphLink{graph=c1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$},
        \sgraphLink{graph=c2,xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$},
        \sgraphLink{graph=c3,xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$},
        \sgraphLink{graph=c4,xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}.
\end{itemize}

Let's plot some points:
\begin{itemize}

\item Points on \sgraphLink{graph=p1,xInterval={\DomX},yInterval={\DomY}}{(0,sin(0));(pi/2,sin(pi/2));(pi,sin(pi));(3pi/2,sin(3pi/2));(2pi,sin(2pi))}{$\sin(x)$}
(clear the graphing screen, click on this \sgraphLink{graph=c1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$}
link, then click on the plotted points link)


\item Plot \sgraphLink{graph=p2,xInterval={\DomX},yInterval={\DomY}}{(1,1);(2,-1);(4,1/3);(3,-1/2)}
    {$(1,1); (2,-1); (4,1/3); (3,-1/2)$}

\item Plot \sgraphLink{graph=c2,connectwith=segment,xInterval={\DomX},yInterval={\DomY}}{(2,0);(1,-1);(3,.5);(4,1);(6,0)}
    {$(2,0);(1,-1);(3,.5);(4,1);(6,0)$}

\end{itemize}

\newpage

\graphName{graph4}

\begin{center}
    {\large\textbf{\textcolor{blue}{Graphing in a Floating Window}}}
\end{center}

\begin{wrapfigure}[3]{l}{40bp}%
\vspace{-\baselineskip}
\iconFloatGraphScreen[poster=aflogo]{40bp}{!}
\end{wrapfigure}%
On this page, we take a different approach, by graphing functions
in a \textsl{floating window}. This might be appropriate for graphing
preset functions. Now let's copy and paste some of the previous text
here: The document author, that's you, can prepare some functions
for the student to view:
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$},
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$},
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$}, and
\sgraphLink{xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}.
All functions are graphed over the interval
$[\,0, 2\pi\,]$. Let's view a graph with a vertical asymptote, shall we?
Try \sgraphLink{xInterval={[.5,1.5]},yInterval={[-20,20]},points=200}{1/(x-1)}{$y = 1/(x-1)$}
and \sgraphLink{xInterval={[0,2]},yInterval={[0,20]},points=200}{1/(x-1)^2}{$y = 1/(x-1)^2$}.


\makebox[\linewidth][c]{\rule{.67\linewidth}{.4pt}}

\parskip6pt

\paragraph*{Controlling the Floating Window.} Clicking a graphing
link will open the floating window and graph the defined function.
Clicking the {\AcroFLeX} icon closes the window. The window itself
has controls. The clicking the upper-right corner closes the window.
Use the lower-left corner to resize the graph window (click and drag
the lower-left corner). Click and drag anywhere else on the boundary
will move the window.

\makebox[\linewidth][c]{\rule{.67\linewidth}{.4pt}}

The following quiz integrates the quiz/shortquiz environment with
the {\AcroFLeX} Graphing routines, and uses \texttt{\string\defineGraphJS}
to graph the input of the user.

\begin{oQuestion}{afGraphQuiz}
\defineGraphJS{graph=c3,xInterval={[-1,3]},yInterval={[-1,9]},
    noquotes,points=40}{event.value}{\myGraph}%
\textbf{\textcolor{red}{Question}} Find the equation of the line
tangent to the \sgraphLink{xInterval={[-1,3]},
yInterval={[-1,9]},points=40}{2x^2}{graph of $f(x) = 2x^2 $} at the
\sgraphLink{graph=p1,xInterval={[-1,3]},yInterval={[-1,9]}}{(1,2)}
    {point $ (1,2) $}. \RespBoxMath[%
    \AddAAKeystroke{if (retn != null){\r\myGraph}}]
    {4x-2}{4}{.0001}{[-1,3]}\hfill\CorrAnsButton{4x-2}\kern1bp\sqClearButton

\end{oQuestion}

\defineGraphJS{graph=c1,wait,xInterval={\DomX},yInterval={\DomY},
    points=40}{sin(x)}{\mySineCurve}
\defineGraphJS{graph=p1,wait,xInterval={\DomX},yInterval={\DomY}}
    {(0,sin(0));(pi/2,sin(pi/2));(pi,sin(pi));(3pi/2,sin(3pi/2));
    (2pi,sin(2pi))}{\mySinePoints}

Below is another example of the use of
\texttt{\string\defineGraphJS}. A link is created with two calls to
the graphing routines, one to plot a sine curve, the other to plot
points on that curve.
\setLinkText[\A{\JS{%
    \clearGraphJS\r
    \mySineCurve\r
    \mySinePoints
}}]{Consider the sine function, and indicated points}%


\newpage

\graphName{graph5}

\begin{center}
    {\large\textbf{\textcolor{blue}{Curves with filled area}}}\\[3ex]
    \graphScreen[poster=aflogo]{\hScreenGraph}{\vScreenGraph}\par\smallskip
    \makebox[\hScreenGraph][c]{\small\graphClrBtn{}{11bp}}
\end{center}

Plot multiple curves using predefined functions:\\
\begin{minipage}[t]{.5\linewidth-10pt}\kern0pt
\begin{itemize}
    \item \sgraphLink{graph=a1,xInterval={\DomX},yInterval={\DomY},points=40}{sin(x)}{$\sin(x)$},
        \sgraphLink{graph=a2,xInterval={\DomX},yInterval={\DomY},points=80}{sin(2x)}{$\sin(2x)$},
        \sgraphLink{graph=a3,xInterval={\DomX},yInterval={\DomY},points=100}{sin(3x)}{$\sin(3x)$},
        \sgraphLink{graph=a4,xInterval={\DomX},yInterval={\DomY},points=100}{sin(4x)}{$\sin(4x)$}.
        \item Parametric Equations
            \begin{itemize}
                \item \sgraphLink{graph=a1,xInterval={[-1,1]},yInterval={[-1,1]},tInterval={[0,2*pi]},
                        points=40}{cos(t);sin(t)}{$x=\cos(t)$; $y=\sin(t)$}
                \item \sgraphLink{graph=a3,xInterval={[0,4]},yInterval={[-2,2]},tInterval={[-2,2]},
                        points=40}{t^2;t}{$x=t^2$; $y=t$}
            \end{itemize}
\end{itemize}
\end{minipage}\hfill\begin{minipage}[t]{.5\linewidth-10pt}\kern0pt
\begin{itemize}
        \item Polar Functions
            \begin{itemize}
                \item \sgraphLink{graph=a2,type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2.3]},tInterval={[0,2pi]},
            points=60}{1+sin(t)}{$ r = 1 + \sin(\theta) $ }
                \item \sgraphLink{graph=a4,type=polar,xInterval={[-1.5,1.5]},yInterval={[-1,2.3]},tInterval={[0,2pi]},
            points=60}{1+1.25sin(t)}{$r = 1 + 1.25\sin(\theta)$ }
            \end{itemize}
\end{itemize}
\end{minipage}

\begin{oQuestion}{afAreaQuiz}
\textbf{\textcolor{red}{Question}} Find the area of the region
\emph{below} the graph of \sgraphLink{graph=a1,xInterval={[0,pi/2]},
yInterval={[0,1.1]}, points=40}{cos(x)}{$ f(x) = \cos(x) $} and
\emph{above} the graph of \sgraphLink{graph=a2,
xInterval={[0,pi/2]}, yInterval={[0,1.1]}, points=40}{sin(x)}{$ g(x)
= \sin(x) $},
as shown in the graph screen above.\\[1ex]
\RespBoxMath{sqrt(2)-1}{1}{.0001}{[0,1]}\hfill\CorrAnsButton{sqrt(2)-1}\kern1bp\sqClearButton
\end{oQuestion}


\end{document}
