-\chapter{Appendix}\label{appendix}\index{Appendix}%
-\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
-\setfooter{\thepage}{}{}{}{}{\thepage}%
-
-\section{Simple Graphics Package}\index{Simple Graphics Package}%
-
-\subsection{Overview}%
-Simple Graphics Package was creates in 1983 by Kevin Rosenberg and is modelled after the graphics library in Foley and van Dam\cite{FOLEY82}.
-
-\begin{verbatim}
- +------------------------+
- | World Coordinate level |
- +-----------+------------+
- |
- +-------------+-------------+
- | Clipping against Window() |
- +-------------+-------------+
- |
- +------------+-------------+
- | Convert to Normalized |
- | device coordinates (NDC) |
- +------------+-------------+
- |
- +-------------+-------------+
- | Clipping against Viewport |
- +-------------+-------------+
- |
- +------------+-------------+
- | Convert to Physical |
- | device coordinates (PDC) |
- +--------------------------+
-\end{verbatim}
-
-\subsection{Functions}%
-
-\subsubsection{World Coordinate Level}%
- initgrf2 () Initialize 2 dimensional graphics\\
- termgrf2 () Terminate 2 dimensional graphics\\
- Window (xmin, ymin, xmax, ymax) Set window for world coordinates\\
- Viewport (xmin, ymin, xmax, ymax) Viewport for window in NDC\\
- MoveAbs (x, y) Move graphics cursor\\
- MoveRel (dx, dy)\\
- PointAbs (x, y) Plot point at current position\\
- PointRel (dx, dy)\\
- LineAbs2 (x, y) Draw line from current point to point\\
- LineRel2 (dx, dy)\\
- MarkerAbs2 (x, y) Draw marker at current position\\
- MarkerRel2 (dx, dy)\\
- PolylineAbs (x[], y[], n) Draw a set of lines\\
- PolylineRel (dx[]. dy[]. n)\\
- wc\_to\_ndc (xwc, ywc, xndc, yndc) Convert from world coord to NDC\\
- ndc\_to\_wc (xndc, yndc, xwc, ywc) Convert from NDC to world coord\\
- DrawText (str) Draw text string at current positon\\
-
- INTERNAL:\\
- calc\_map () Calculate wc to ndc factors\\
- clip(rectangle[4], x1, y1, x2, y2) Clip a line againt rectangle\\
-
-
-\subsubsection{Normalized Coordinate level}%
- stylus (x, y, beam) Draw a line from current position\\
- setColor (color) Set current drawing color\\
- setLinestyle (style) Set current line style\\
- setLinewidth (width) Set current line width\\
- setTextColor (foreground, background) If back=-1, then transparent \\
-
- setMarker (type, color) Set marker attibutes\\
- markerNDC (xndc, yndc) Draw marker at NDC position\\
-
-\subsection{Coordinate Mapping}%
-
-\subsubsection{Mapping from world coordinates to physical device coordinates}%
-
-Window (World Coordinates): xwmin, xwmax, ywmin, ywmax \\
-Viewport (Normalized Device Coordinates): xvmin, xvmax, yvmin, yvmax\\
-Physical (Physicial Device Coordinates): xpmax, ypmax\\
+\appendix
+
+\chapter{Simple Graphics Package}\label{appendix}\index{Appendix}%
+\setheader{{\it Appendix \thechapter}}{}{}{}{}{{\it Appendix \thechapter}}%
+\ctsimfooter%
+
+
+Simple Graphics Package was created in 1980 by Kevin Rosenberg and
+is modelled after the graphics library in Foley and van
+Dam\cite{FOLEY82}. It is designed to be platform-independent.
+
+\section{Flowchart}
+Master coordinate (MC) level \\
+$\hspace{3cm} \downarrow$ \\
+Apply \emph{Current transformation matrix} \\
+$\hspace{3cm} \downarrow$ \\
+World coordinate (WC) level \\
+$\hspace{4cm} \downarrow$ \\
+Clipping against Window \\
+$\hspace{3cm} \downarrow$ \\
+Convert to Normalized device coordinates (NDC) \\
+$\hspace{3cm} \downarrow$ \\
+Clipping against Viewport \\
+$\hspace{3cm} \downarrow$ \\
+Convert to Physical device coordinates (PDC) \\
+
+
+\section{Functions}%
+
+\subsection{State functions}
+\begin{twocollist}
+\twocolitem{\texttt{eraseWindow()}}{Clears the screen}
+\twocolitem{\texttt{setColor(color)}}{Set current pen color}
+\twocolitem{\texttt{setLinestyle(style)}}{Set current pen style}
+\twocolitem{\texttt{setLinewidth(width)}}{Set current pen width}
+\twocolitem{\texttt{setTextColor(foreground, background)}}{Set text colors}
+\twocolitem{\texttt{setMarker(type, color)}}{Set marker attibutes}
+\twocolitem{\texttt{setRasterOp(rasterOp)}}{Set raster operator}
+\end{twocollist}
+
+
+\subsection{Master coordinate functions}
+\begin{twocollist}
+\twocolitem{setWindow(xmin, ymin, xmax, ymax)}{Set window for world
+coordinates}
+\twocolitem{\texttt{moveAbs(x, y)}}{Move graphics cursor to absolute position}
+\twocolitem{\texttt{moveRel(dx, dy)}}{Move graphics cursor relative to current position}
+\twocolitem{\texttt{pointAbs(x, y)}}{Draw point at current position}
+\twocolitem{\texttt{pointRel(dx, dy)}}{Draw point relative to current position}
+\twocolitem{\texttt{lineAbs(x, y)}}{Draw line from current position to
+absolute position}
+\twocolitem{\texttt{lineRel(dx, dy)}}{Draw line from current position to position
+relative to current position}
+\twocolitem{\texttt{markerAbs(x,y)}}{Draw marker at current position}
+\twocolitem{\texttt{markerRel(dx,dy)}}{Draw marker relative to current position}
+\twocolitem{\texttt{polylineAbs(x[], y[], n)}}{Draw a series of lines to absolute position}
+\twocolitem{\texttt{polylineRel(dx[], dy[], n)}}{Draw series of lines relative to current position}
+\twocolitem{\texttt{drawString(str)}}{Draw text string at current positon}
+\twocolitem{\texttt{drawCircle(r}}{Draw circle at current positon}
+\twocolitem{\texttt{drawArc(r,start,stop)}}{Draw arc with center at current positon}
+\twocolitem{\texttt{drawRect(xmin,ymin,xmax,ymax)}}{Draw rectangle}
+\end{twocollist}
+
+\subsection{Normalized coordinate functions}%
+\begin{twocollist}
+\twocolitem{\texttt{Viewport(xmin, ymin, xmax, ymax)}}{Viewport for window
+in NDC}
+\twocolitem{\texttt{stylus(x, y, beam)}}{Draw a line from current
+position}
+\twocolitem{\texttt{markerNDC(xndc, yndc)}}{Draw marker at NDC position}
+\end{twocollist}
+
+\subsection{Master coordinate to World coordinate transformations}%
+These transformation functions operate on the \emph{Current transformation
+matrix} (CTM).
+
+\begin{twocollist}
+\twocolitem{\texttt{clearCTM()}}{Sets the CTM to an identity matrix}
+\twocolitem{\texttt{preTranslate(x,y)}}{Apply translation to CTM}
+\twocolitem{\texttt{postTranslate(x,y)}}{Apply translation to CTM}
+\twocolitem{\texttt{preScale(x,y)}}{Apply scale to CTM}
+\twocolitem{\texttt{postScale(x,y)}}{Apply scale to CTM}
+\twocolitem{\texttt{preRotate(angle)}}{Apply rotation to CTM}
+\twocolitem{\texttt{postRotate(angle)}}{Apply rotation to CTM}
+\twocolitem{\texttt{preShear(x,y)}}{Apply shear to CTM}
+\twocolitem{\texttt{postShear(x,y)}}{Apply shear to CTM}
+\end{twocollist}
+
+\subsection{Coordinate transformation functions}%
+\begin{twocollist}
+\twocolitem{\texttt{transformMCtoNDC(\&x,\&y)}}{Convert from master
+coordinates to NDC}
+\twocolitem{\texttt{transformNDCtoMC(\&x,\&y)}}{Convert from NDC to master
+coordinates}
+\end{twocollist}
+
+\section{Coordinate Mapping}
+
+\subsection{Dimensions}
+Window (World Coordinates): $X_{wmin}, X_{wmax}, Y_{wmin}, Y_{wmax}$ \\
+Viewport (Normalized Device Coordinates): $X_{vmin}, X_{vmax}, Y_{vmin}, Y_{vmax}$\\
+Physical (Physicial Device Coordinates): $X_{pmax}, Y_{pmax}$\\
+
+\subsection{Formulas}
+To convert from Master coordinates to World coordinates: \\
+Apply current transformation matrix