[cairo] Updated bibliography for cairo
Mathieu Lacage
Mathieu.Lacage at sophia.inria.fr
Thu Nov 30 00:32:36 PST 2006
On Wed, 2006-11-29 at 17:35 -0800, Carl Worth wrote:
> Someone recently asked me for some pointers to readings on the
> algorithms implemented in cairo. After I wrote a reply I thought
> others might also want to look at it, so I shoved it into a top-level
> file in the source repository named BIBLIOGRAPHY and linked in into
> the cairo wiki, (in the place of an older "bibliography"), page with
> much less content.
>
> The version I posted can be seen here:
>
> http://cairographics.org/BIBLIOGRAPHY
>
> And is also copied below.
>
> As people improve or implement new algorithms, it would be great to
> update this document as well. The URL above will always reflect the
> latest version of the file as pushed out into the master branch of
> cairo's central repository.
>
> -Carl
>
> Here's an effort to document some of the academic work that was
> referenced during the implementation of cairo. It is presented in the
> context of operations as they would be performed by either
> cairo_stroke() or cairo_fill():
I usually recommend the following textbook for a good visual
introduction to some of the topics you talk about below.
"Computational Geometry, Algorithms and Applications"
by de Berg, M., van Kreveld, M., Overmars, M., Schwarzkopf, O.
>
> Given a Bézier path, approximate it with line segments:
>
> The deCastlejau algorithm
> [need a citation here]
The original work was never published other than through internal memos:
"Outillages methodes calcul",
P de Casteljau, technical report, - Andre Citroen Automobiles SA, Paris,
1959
>
> Then, if stroking, construct a polygonal representation of the pen
> approximating a circle (if filling skip three steps):
>
> "Good approximation of circles by curvature-continuous Bezier
> curves", Tor Dokken and Morten Daehlen, Computer Aided
> Geometric Design 8 (1990) 22-41.
>
> Add points to that pen based on the initial/final path faces and take
> the convex hull:
>
> Convex hull algorithm
> [need a citation here]
>
> Now, "convolve" the "tracing" of the pen with the tracing of the path:
>
> "A Kinetic Framework for Computational Geometry", Leonidas
> J. Guibas, Lyle Ramshaw, and Jorge Stolfi, Proceeding of the
> 24th IEEE Annual Symposium on Foundations of Computer Science
> (FOCS), November 1983, 100-111.
>
> The result of the convolution is a polygon that must be filled. A fill
> operations begins here. We use a very conventional Bentley-Ottmann
> pass for computing the intersections, informed by some hints on robust
> implementation courtesy of John Hobby:
>
> John D. Hobby, Practical Segment Intersection with Finite
> Precision Output, Computation Geometry Theory and
> Applications, 13(4), 1999.
>
> http://cm.bell-labs.com/who/hobby/93_2-27.pdf
>
> Hobby's primary contribution in that paper is his "tolerance square"
> algorithm for robustness against edges being "bent" due to restricting
> intersection coordinates to the grid available by finite-precision
> arithmetic. This is one algorithm we have not implemented yet.
>
> From the result of the intersection-finding pass, we are currently
> computing a tessellation of trapezoids, (the exact manner is
> undergoing some work right now with some important speedup), but we
> may want to rasterize directly from those edges at some point.
>
> Given the set of tessellated trapezoids, we currently execute a
> straightforward, (and slow), point-sampled rasterization, (and
> currently with a near-pessimal regular 15x17 grid).
>
> We've now computed a mask which gets fed along with the source and
> destination into cairo's fundamental rendering equation. The most
> basic form of this equation is:
>
> destination = (source IN mask) OP destination
>
> with the restriction that no part of the destination outside the
> current clip region is affected. In this equation, IN refers to the
> Porter-Duff "in" operation, while OP refers to a any user-selected
> Porter-Duff operator:
>
> T. Porter & T. Duff, Compositing Digital Images Computer
> Graphics Volume 18, Number 3 July 1984 pp 253-259
>
> http://keithp.com/~keithp/porterduff/p253-porter.pdf
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://cairographics.org/cgi-bin/mailman/listinfo/cairo
--
More information about the cairo
mailing list