From: David Gow Date: Wed, 26 Mar 2014 07:34:58 +0000 (+0800) Subject: Some version of some literature notes. To be TeXiFiEd X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=cfb938735e59c97943e4e73d11f1c5602b61d96f;p=ipdf%2Fdocuments.git Some version of some literature notes. To be TeXiFiEd --- diff --git a/LitNotes/BresenhamLineDrawing b/LitNotes/BresenhamLineDrawing new file mode 100644 index 0000000..45c78da --- /dev/null +++ b/LitNotes/BresenhamLineDrawing @@ -0,0 +1,24 @@ +Algorithm for computer control of a digital plotter +J. E. Bresenham + +Bresenham's line drawing algorithm is a fast, high quality line rasterization +algorithm which is still the basis for most (aliased) line drawing today. The +paper, while originally written to describe how to control a particular plotter, +is uniquely suited to rasterizing lines for display on a pixel grid. + +Lines drawn with Bresenham's algorithm must begin and end at integer pixel +coordinates, though one can round or truncate the fractional part. In order to +avoid multiplication or division in the algorithm's inner loop, + +The algorithm works by scanning along the long axis of the line, moving along +the short axis when the error along that axis exceeds 0.5px. Because error +accumulates linearly, this can be achieved by simply adding the per-pixel +error (equal to (short axis/long axis)) until it exceeds 0.5, then incrementing +the position along the short axis and subtracting 1 from the error accumulator. + +As this requires nothing but addition, it is very fast, particularly on the +older CPUs used in Bresenham's time. Modern graphics systems will often use Wu's +line-drawing algorithm instead, as it produces antialiased lines, taking +sub-pixel coverage into account. Bresenham himself extended this algorithm to +produce Bresenham's circle algorithm. The principles behind the algorithm have +also been used to rasterize other shapes, including Bézier curves. diff --git a/LitNotes/PorterDuffCompositing b/LitNotes/PorterDuffCompositing new file mode 100644 index 0000000..94253b3 --- /dev/null +++ b/LitNotes/PorterDuffCompositing @@ -0,0 +1,42 @@ +Porter, Thomas and Duff, Tom, "Compositing Digital Images", Computer Graphics Vol 18, Num 3, July 1984 + +Compositing Digital Images +Thomas Porter +Tom Duff +Computer Graphics Project +Lucasfilm Ltd. + + +Perter and Duff's classic paper "Compositing Digital Images" lays the +foundation for digital compositing today. By providing an "alpha channel," +images of aribitary shapes — and images with soft edges or sub-pixel coverage +imformation — can be overlayed digitally, allowing separate objects to be +rasterized separately without a loss in quality. + +Pixels in digital images are usually represented as 3-tuples containing +(red component, green component, blue component). Nominally these values are in +the [0-1] range. In the Porter-Duff paper, pixels are stored as (R,G,B,\alpha) +4-tuples, where alpha is the fractional coverage of each pixel. If the image +only covers half of a given pixel, for example, its alpha value would be 0.5. + +To improve compositing performance, albeit at a possible loss of precision in +some implementations, the red, green and blue channels are premultiplied by the +alpha channel. This also simplifies the resulting arithmetic by having the +colour channels and alpha channels use the same compositing equations. + +Several binary compositing operations are defined: +- over +- in +- out +- atop +- xor +- plus + +The paper further provides some additional operations for implementing fades and +dissolves, as well as for changing the opacity of individual elements in a +scene. + +The method outlined in this paper is still the standard system for compositing +and is implemented almost exactly by modern graphics APIs such as OpenGL. It is +all but garunteed that this is the method we will be using for compositing +document elements in our project.