X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fctsim-appendix.tex;h=8657e9c664d9b40ef1506c01264eca1734016b2e;hb=00c1e9f08a38db0e14d146fbadb2daa0faa30278;hp=c25c257638428656f2d10772a88b7efe61d5bf94;hpb=33dd4470441860e1176a737ee4fd1bb80a200746;p=ctsim.git diff --git a/doc/ctsim-appendix.tex b/doc/ctsim-appendix.tex index c25c257..8657e9c 100644 --- a/doc/ctsim-appendix.tex +++ b/doc/ctsim-appendix.tex @@ -1,11 +1,13 @@ \chapter{Appendix}\label{appendix}\index{Appendix}% \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% +\setfooter{\thepage}{}{}{}{\manver}{\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}. +Simple Graphics Package was created in 1980 by Kevin Rosenberg and +is modelled after the graphics library in Foley and van +Dam\cite{FOLEY82}. \begin{verbatim} +------------------------+ @@ -33,55 +35,61 @@ Simple Graphics Package was creates in 1983 by Kevin Rosenberg and is modelled a \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\\ +\subsubsection{World Coordinate Level} +\begin{twocollist} +\twocolitem{initgrf2}{Initialize 2 dimensional graphics} +\twocolitem{termgrf2}{Terminate 2 dimensional graphics} +\twocolitem{setColor(color)}{Set current drawing color} +\twocolitem{setLinestyle (style)}{Set current line style} +\twocolitem{setLinewidth (width)}{Set current line width} +\twocolitem{setTextColor (foreground, background)}{If back=-1, +then transparent} \twocolitem{setMarker (type, color)}{Set marker +attibutes} +\end{twocollist} - INTERNAL:\\ - calc\_map () Calculate wc to ndc factors\\ - clip(rectangle[4], x1, y1, x2, y2) Clip a line againt rectangle\\ +\subsubsection{State Commands} +\begin{twocollist} +\twocolitem{Window(xmin, ymin, xmax, ymax)}{Set window for world +coordinates} \twocolitem{MoveAbs(x, y)}{Move graphics cursor} +\twocolitem{MoveRel(dx, dy)}{} \twocolitem{PointAbs (x, y)}{Plot +point at current position} \twocolitem{PointRel (dx, dy)}{} +\twocolitem{LineAbs2 (x, y)}{Draw line from current point to +point} \twocolitem{LineRel2 (dx, dy)}{} \twocolitem{MarkerAbs2 (x, +y)}{Draw marker at current position} \twocolitem{MarkerRel2 (dx, +dy)}{} \twocolitem{PolylineAbs (x[], y[], n)}{Draw a set of lines} +\twocolitem{PolylineRel (dx[], dy[], n)}{} +\twocolitem{wc\_to\_ndc(xwc, ywc, xndc, yndc)}{Convert from world +coord to NDC} \twocolitem{ndc\_to\_wc(xndc, yndc, xwc, +ywc)}{Convert from NDC to world coord} \twocolitem{DrawText +(str)}{Draw text string at current positon} +\end{twocollist} \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 \\ +\begin{twocollist} +\twocolitem{Viewport (xmin, ymin, xmax, ymax)}{Viewport for window +in NDC} \twocolitem{stylus (x, y, beam)}{Draw a line from current +position} \twocolitem{markerNDC(xndc, yndc)}{Draw marker at NDC +position} +\end{twocollist} - setMarker (type, color) Set marker attibutes\\ - markerNDC (xndc, yndc) Draw marker at NDC position\\ -\subsection{Coordinate Mapping}% +\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\\ +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}$\\ To convert from WC to NDC:\\ \begin{equation} - X_{ndc} = X_vmin + (X_wc - X_wmin) / (X_wmax - X_wmin) + X_{ndc} = X_{vmin} + (X_{vmax} - X_{vmin}) (X_{wc} - X_{wmin}) / (X_{wmax} - X_{wmin}) \end{equation} \begin{equation} - Y_{ndc} = Y_vmin + (Y_wc - Y_wmin) / (Y_wmax - Y_wmin) + Y_{ndc} = Y_{vmin} + (Y_{vmax} - Y_{vmin}) (Y_{wc} - Y_{wmin}) / (Y_{wmax} - Y_{wmin}) \end{equation} + To convert from NDC to PDC: \begin{equation} X_{pdc} = X_{ndc} X_{pmax} @@ -89,17 +97,3 @@ To convert from NDC to PDC: \begin{equation} Y_{pdc} = X_{ndc} Y_{pmax} \end{equation} - -So, for each device set up the following composite transformation:\\ -\begin{equation} - x_{pdc} = x_{pmax} (x_{vmin} + (x_{wc} - x_{wmin}) / (x_{wmax} - x_{wmin})) -\end{equation} -\begin{equation} - y_{pdc} = y_{pmax} (y_{vmin} + (y_{wc} - y_{wmin}) / (y_{wmax} - y_{wmin})) -\end{equation} -\begin{equation} - X_{pdc} = X_{pmax} X_{vmin} + ((X_{wc} \- X_{wmin}) X_{pmax})/(X_{wmax} \- X_{wmin})) -\end{equation} -\begin{equation} - X_{pdc} = X_{add} + (X_wc - X_{sub}) X_{fract} -\end{equation}