Merge branch 'master' of git.ucc.asn.au:ipdf/documents
authorDavid Gow <david@ingeniumdigital.com>
Wed, 26 Mar 2014 07:35:30 +0000 (15:35 +0800)
committerDavid Gow <david@ingeniumdigital.com>
Wed, 26 Mar 2014 07:35:30 +0000 (15:35 +0800)
LitNotes/BresenhamLineDrawing [new file with mode: 0644]
LitNotes/PorterDuffCompositing [new file with mode: 0644]

diff --git a/LitNotes/BresenhamLineDrawing b/LitNotes/BresenhamLineDrawing
new file mode 100644 (file)
index 0000000..45c78da
--- /dev/null
@@ -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 (file)
index 0000000..94253b3
--- /dev/null
@@ -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.

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