Restructure chapters, delete a bunch of words, add more words, do some things, panic...
[ipdf/sam.git] / chapters / Process / Transformations.tex
1 Equation \eqref{view-transformation} involves a division operation; in general, the result cannot be represented exactly in either a fixed or floating point format. However, if the coordinates involved are expressed as rational numbers, the result will always be exact.
2
3
4         
5
6 \begin{enumerate}
7         \item Store static object bounds, transform to view before rendering
8         \begin{itemize}
9                 \item Straight foward approach
10                 \item Causes the most obvious rounding errors; impossible to render objects accurately below epsilon
11                 \item The transformation can be performed by the GPU or CPU; the GPU is restricted to floats
12                 \item CPU can perform transformation to arbitrary precision, but this requires all object bounds to be expressed with arbitrary precision
13         \end{itemize}
14         \item Modify all object bounds, no transformation required before rendering
15         \begin{itemize}
16                 \item The rounding error on floats does not accumulate as quickly
17                 \item Instead of one division by a very small number there are repeated divisions by larger numbers
18                 \item However, if the document is scaled so object bounds $\to 0$ then the object will not be recoverable
19                 \item For arbitrary precision we still need to apply all bounds transformations on the GPU
20         \end{itemize}
21         \item Keep object bounds static to some intermediate object and transform the bounds of that object
22         \begin{itemize}
23                 \item We have used SVG \verb/<path>/ to construct the intermediate objects; all beziers are relative to their parent path.
24                 \item One could instead use the entire SVG bounds; however
25                         for an SVG with a high level of detail this would have problems \rephrase{elaborate}.
26                 \item We only need to apply some bounds transformations on the CPU
27                 \item However as the document grows we still need to apply transformations to all paths, even those that are not visible 
28         \end{itemize}
29         \item Quad tree
30         \begin{itemize}
31                 \item Divide space up into a quad tree
32                 \item Refer to David's stuff
33                 \item The advantage over Path based transformations is that the bounds of objects which are not visible do not need to be recalculated
34         \end{itemize}
35         
36 \end{enumerate}
37
38

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