More presentation, also videos
[ipdf/sam.git] / presentation / presentation.tex
index 7d5494b..8b4108c 100644 (file)
 }
 
 
-\begin{frame}[plain]
-\frametitle{Contents}
-  \tableofcontents
-  % You might wish to add the option [pausesections]
-\end{frame}
 
 \begin{frame}
        \frametitle{Summary}
        \begin{itemize}
-               \item Vector graphics allow scaling but not arbitrary scaling
-               \item We implemented a vector graphics viewer that does allow arbitrary scaling
-               \item ... but it will take an arbitrary amount of time
+               \item Vector graphics allow detail to be scaled but not by an arbitrary amount
+               \item We've implemented a vector graphics viewer which does allow arbitrary scaling
        \end{itemize}
 \end{frame}
 
+%\begin{frame}[plain]
+%\frametitle{Contents}
+%  \tableofcontents
+  % You might wish to add the option [pausesections]
+%\end{frame}
+
+
 % Start of presentation slides
-\section{Motivation \& Background}
+\section{Motivation}
 \begin{frame}
 \frametitle{Graphics Formats}
 \begin{itemize}
 \end{frame}
 
 
+
+
+
 \begin{frame} 
-\frametitle{Why is there a zoom limit?} 
+\frametitle{Is there a zoom limit?} 
 \centering
 \includegraphics{../figures/koch1.pdf}
 \end{frame}
 
+\section{Floating Point}
+
 \begin{frame} 
-\frametitle{Why is there a zoom limit?} 
+\frametitle{Is there a zoom limit?} 
 \begin{itemize}
        \item SVG, PostScript, PDF specify IEEE-754 \emph{single} floating point number representations
        \item Range of values: $\approx 3 \times 10^{-38} \to 3 \times 10^{+38}$
 \includegraphics[width=0.8\textwidth]{../figures/floats.pdf}
 \end{frame}
 
+\begin{frame}
+\frametitle{Visualisation of Floats II}
+\begin{itemize}
+       \item Difference between successive floats
+\end{itemize}
+\centering
+\includegraphics[width=0.8\textwidth]{../figures/floats_diff.pdf}
+\end{frame}
+
+\begin{frame}
+       \frametitle{Precision is limited}
+       \centering
+       \includegraphics[width=0.8\textwidth]{../figures/fox-vector_highzoom1.png}
+\end{frame}
 
 \begin{frame}
 \frametitle{Structure of Vector Graphics}
 
 \end{frame}
 
+\section{Vector Graphics Viewer}
 \begin{frame}
-\frametitle{Structure of Vector Graphics III}
+\frametitle{Structure of Vector Graphics II}
 \begin{itemize}
+       \item \small{Upload \emph{bounding rectangles} of individual objects to renderer (OpenGL)}
        \item Rectangles show individual B\'{e}ziers forming outline of the Fox
 \end{itemize}
 \centering
 \end{frame}
 
 
+\begin{frame}
+\frametitle{Viewing Vector Graphics}
+\begin{itemize}
+       \item Tranform coordinates in document $\to$ display
+\end{itemize}
+\centering
+\includegraphics[width=0.8\textwidth]{../figures/view_transformation.pdf}
+\end{frame}
+
+
+\section{Precision Issues}
+
+
+
 \begin{frame}
 \frametitle{Floating point calculations \\ go wrong}
 \begin{itemize}
-       \item Scaled to $~1\times 10^{-6}$, the fox is very sick
+       \item Example: Insert objects at very small scale
 \end{itemize}
 \centering
-       \includegraphics[width=0.5\textwidth]{../figures/fox-vector_highzoom1.png}
+       \includegraphics[width=0.8\textwidth]{../figures/view_transformation_fail.pdf}
+
+\end{frame}
+
+\begin{frame}
+\frametitle{Reducing error}
+               \begin{itemize}
+                       \item Don't apply view transformation directly
+                       \item Store object bounds relative to the display
+                       \item When modifying the view, modify object bounds
+                       \item Detail inserted into the view looks good, But...
+               \end{itemize}
+\centering
+       \includegraphics[width=0.9\textwidth]{../figures/view_transformation_cumulative.pdf}
+\end{frame}
 
+
+\begin{frame}
+\frametitle{Cumulated Errors \\ with intermediate coord system}
+       \begin{itemize}
+               \item Apply transformations to Paths not individual B\'{e}ziers
+               \item Paths render correctly, but drift appart
+       \end{itemize}
+\centering
+       \includegraphics[width=0.9\textwidth]{../figures/view_transformation_paths.pdf}
 \end{frame}
 
 
+\section{Arbitrary Precision Rationals}
+
 \begin{frame}
        \frametitle{Arbitrary Precision Rationals}      
        \begin{align}
        \end{align}     
        \begin{itemize}
                \item $d_i$ are fixed size integers, $\beta = 2^{64}$
-               \item Size $S$ grows as needed
+               \item {\bf Size $S$ grows as needed}
                \item Operations are always exact
                \item Implemented by GNU Multiple Precision Library
        \end{itemize}
 \end{frame}
 
 \begin{frame}
-       \frametitle{Replace floats with rationals?}
+       \frametitle{Use Rationals to represent \\ Path Coordinates}
        \begin{itemize}
-               \item Rationals are \emph{slow}
-               \item Screen coordinates always in range $0 \to 1$
-               \item Introduce intermediate coordinate system
-               \begin{itemize}
-                       \item Many B\'{e}ziers contained in a Path
-                       \item Use Rationals for bounds of the Path
-                       \item Use floats to transform B\'{e}zier coordinates
-               \end{itemize}
+               \item Can move view to arbitrary point
+               \item Insert detail (ie: Test SVG image) in Display coordinates
+               \item Move view to another arbitrary point
+               \item Move view back
+               \item Detail is unchanged
        \end{itemize}
 \end{frame}
 
-\section{Live Demo}
+
+
+
+\section{Demonstration}
 \begin{frame}
-\frametitle{Live Demo}
+\frametitle{Demonstration}
 \begin{itemize}
        \item We can import standard SVGs wherever we want
        \item If we are willing to wait long enough
 
 \section{Conclusions}
 \begin{frame}
-       \frametitle{Conclusions}
-\begin{itemize}
-       \item What we have done?
+       \frametitle{What was done}
        \begin{itemize}
                \item Implemented a basic SVG viewer
                \item Demonstrated how precision affects rendering vector graphics
                \item Using GMP rationals, demonstrated the ability to render SVGs scaled to an arbitrary position in a document
        \end{itemize}
-       \item Possible future work
+\end{frame}
+
+\begin{frame}
+       \frametitle{Future work}
        \begin{itemize}
                \item Implement more of the SVG standard
                \item Trial alternative number representations
                \item Allow for saving and loading SVGs with arbitrary precision
        \end{itemize}
-\end{itemize}
 \end{frame}
-\section{References}
+%\section{References}
 \begin{frame}
        \frametitle{References \& More information}
        \begin{itemize}
                \item Kahan's website \url{http://http.cs.berkeley.edu/~wkahan}
        \end{itemize}
 \end{frame}
-\section{Questions}
+%\section{Questions}
 
-\begin{frame}
-\frametitle{Q: Why don't you have colour?}
-\begin{itemize}
-       \item We do!\footnote{If you are willing to wait long enough}
-       \item A complete implementation of SVG is ``future work''
-\end{itemize}
-\centering
-\includegraphics[width=0.5\textwidth]{../figures/shady-the-fox.png}
-\includegraphics[width=0.5\textwidth]{../figures/who-the-hell-needs-antialiasing-anyway.png}
 
-\end{frame}
 
 \begin{frame}
-\frametitle{Q: Why not just use doubles?}
+\frametitle{Q: Why not just increase \\ floating point precision?}
 \begin{itemize}
        \item Any fixed precision format will still give inexact results
-       \item But the inexact results will appear slower
+       \item Eg: Accuracy of rendering a grid
 \end{itemize}
 \end{frame}
 
 \end{itemize}
 \end{frame}
 
-
 \begin{frame}
-       \frametitle{Floating Point calculations \\ go wrong}
-       \begin{itemize}
-               \item Plank Length: $1.61 \times 10^{-35}$ metres $ > 3\times10^{-38}$
-               \item Size of Universe: $4.3 \times 10^{26}$ metres $ << 3 \times10^{38}$
-               \item Why isn't this good enough for $1\times 10^{-6}$
-       \end{itemize}
-\end{frame}
+\frametitle{Q: Why don't you have colour?}
+\begin{itemize}
+       \item We do!\footnote{If you are willing to wait long enough}
+       \item A complete implementation of SVG is ``future work''
+\end{itemize}
+\centering
+\includegraphics[width=0.5\textwidth]{../figures/shady-the-fox.png}
+\includegraphics[width=0.5\textwidth]{../figures/who-the-hell-needs-antialiasing-anyway.png}
 
-\begin{frame}
-       \frametitle{Floating point calculations \\ go wrong}
-       \begin{itemize}
-               \item Transforming from document $(x,y)$ $\to$ screen $(X,Y)$
-               \item View is at $(v_x,v_y)$ in document, has dimensions $(v_w,v_h)$
-       \end{itemize}
-       \begin{align}
-               X = \frac{x - v_x}{v_w} &,\quad\quad Y = \frac{y - v_y}{v_h}
-       \end{align}
-       \begin{itemize}
-               \item Division by $v_w \approx 10^{-6}$ increases the error due to $x - v_x$
-               \item Using \emph{double} precision, render correctly down to $v_w \approx 10^{-37}$
-       \end{itemize}
 \end{frame}
 
 

UCC git Repository :: git.ucc.asn.au