[cairo-commit] talks/ddc_2005 cairo.xml,1.1,1.2

Carl Worth commit at pdx.freedesktop.org
Tue Jul 19 05:33:05 PDT 2005


Committed by: cworth

Update of /cvs/cairo/talks/ddc_2005
In directory gabe:/tmp/cvs-serv9200

Modified Files:
	cairo.xml 
Log Message:
Talk is about half-finished now...

Index: cairo.xml
===================================================================
RCS file: /cvs/cairo/talks/ddc_2005/cairo.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cairo.xml	19 Jul 2005 11:06:40 -0000	1.1
+++ cairo.xml	19 Jul 2005 12:33:03 -0000	1.2
@@ -7,7 +7,7 @@
 
   <slides theme="cairo"
 	  presentation="an insider's guide to cairo" 
-	  presentation-subtitle="an insider's guide"
+	  presentation-subtitle="an insider’s guide"
 	  URL="http://cairographics.org"
 	  bullet="bullet">
 
@@ -48,16 +48,205 @@
       </g>
     </slide>
 
-    <slide title="why is stroking hard?">
-      <li>postscript doesn't always get it right</li>
-      <li>inkscape doesn't always get it right</li>
+    <slide title="is stroking that hard?">
+      <li>postscript doesn’t always get it right</li>
+      <li>inkscape doesn’t always get it right</li>
     </slide>
 
-    <slide title="why is stroking hard?">
-      <li>postscript doesn't always get it right</li>
-      <li>inkscape doesn't always get it right</li>
+    <slide title="is stroking that hard?">
+      <li>postscript doesn’t always get it right</li>
+      <li>inkscape doesn’t always get it right</li>
       <li>...</li>
-      <li>cairo doesn't always get it right</li>
+      <li>cairo doesn’t always get it right</li>
+    </slide>
+
+    <slide title="cubic Bezier splines">
+      <ul>
+	<li>well understood primitive</li>
+	<li>many pleasing properties:</li>
+	<ul>
+	  <li>easily decomposed</li>
+	  <li>bounded by convex hull of control points</li>
+	</ul>
+	<li>but cannot represent circular arcs exactly</li>
+      </ul>
+    </slide>
+
+    <slide title="deCastlejau decomposition">
+      <g transform="translate(0,100)">
+	<path stroke="black" stroke-width="2" fill="none"
+	      d="M0,300 L 200,0 L 500,0, L 800,200"/>
+	<circle cx="0"   cy="300" r="5"/>
+	<circle cx="200" cy="0"   r="5"/>
+	<circle cx="500" cy="0"   r="5"/>
+	<circle cx="800" cy="200" r="5"/>
+      </g>
+    </slide>
+
+    <slide title="1) find 3 midpoints">
+      <g transform="translate(0,100)" fill="#808080">
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M0,300 L 200,0 L 500,0, L 800,200"/>
+	<circle cx="0"   cy="300" r="5"/>
+	<circle cx="200" cy="0"   r="5"/>
+	<circle cx="500" cy="0"   r="5"/>
+	<circle cx="800" cy="200" r="5"/>
+	<path stroke="blue" stroke-width="2" fill="none"
+	      d="M100,150 L 350,0 L 650,100"/>
+	<circle fill="blue" cx="100" cy="150" r="5"/>
+	<circle fill="blue" cx="350" cy="0"   r="5"/>
+	<circle fill="blue" cx="650" cy="100"   r="5"/>
+      </g>
+    </slide>
+
+    <slide title="2) find 2 new midpoints">
+      <g transform="translate(0,100)" fill="#808080">
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M0,300 L 200,0 L 500,0, L 800,200"/>
+	<circle cx="0"   cy="300" r="5"/>
+	<circle cx="200" cy="0"   r="5"/>
+	<circle cx="500" cy="0"   r="5"/>
+	<circle cx="800" cy="200" r="5"/>
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M100,150 L 350,0 L 650,100"/>
+	<circle  cx="100" cy="150" r="5"/>
+	<circle  cx="350" cy="0"   r="5"/>
+	<circle  cx="650" cy="100"   r="5"/>
+	<path stroke="blue" stroke-width="2" fill="none"
+	      d="M225,75 L 500,50"/>
+	<circle fill="blue" cx="225" cy="75" r="5"/>
+	<circle fill="blue" cx="500" cy="50" r="5"/>
+      </g>
+    </slide>
+
+    <slide title="3) final midpoint is on spline">
+      <g transform="translate(0,100)" fill="#808080">
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M0,300 L 200,0 L 500,0, L 800,200"/>
+	<circle cx="0"   cy="300" r="5"/>
+	<circle cx="200" cy="0"   r="5"/>
+	<circle cx="500" cy="0"   r="5"/>
+	<circle cx="800" cy="200" r="5"/>
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M100,150 L 350,0 L 650,100"/>
+	<circle  cx="100" cy="150" r="5"/>
+	<circle  cx="350" cy="0"   r="5"/>
+	<circle  cx="650" cy="100"   r="5"/>
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M225,75 L 500,50"/>
+	<circle  cx="225" cy="75" r="5"/>
+	<circle  cx="500" cy="50" r="5"/>
+	<circle fill="blue" cx="362.5" cy="62.5" r="5"/>
+      </g>
+    </slide>
+
+    <slide title="4) two sub-splines fell out">
+      <g transform="translate(0,100)" fill="#808080">
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M0,300 L 200,0 L 500,0, L 800,200"/>
+	<circle cx="200" cy="0"   r="5"/>
+	<circle cx="500" cy="0"   r="5"/>
+	<path stroke="#808080" stroke-width="2" fill="none"
+	      d="M100,150 L 350,0 L 650,100"/>
+	<circle cx="350" cy="0"   r="5"/>
+
+	<path stroke="blue" stroke-width="2" fill="none"
+	      d="M0,300 L100,150 L225,75 L 362.5,62.5"/>
+	<circle fill="blue" cx="0"   cy="300" r="5"/>
+	<circle fill="blue" cx="100" cy="150" r="5"/>
+	<circle fill="blue" cx="225" cy="75" r="5"/>
+
+	<path stroke="red" stroke-width="2" fill="none"
+	      d="M362.5,62.5 L 500,50 L 650,100 L 800,200"/>
+	<circle fill="violet" cx="362.5" cy="62.5" r="5"/>
+	<circle fill="red" cx="500" cy="50" r="5"/>
+	<circle fill="red" cx="650" cy="100"   r="5"/>
+	<circle fill="red" cx="800" cy="200" r="5"/>
+      </g>
+    </slide>
+
+    <slide title="let's try stroking">
+    </slide>
+
+    <slide title="let's try stroking">
+      <g stroke="black" stroke-width="2" fill="none" transform="translate(300,0)" font-size="40">
+	<path d="M50,350 C 50,50 150,350 150,50"/>
+      </g>
+    </slide>
+
+    <slide title="let's try stroking">
+      <g stroke="black" stroke-width="2" fill="none" transform="translate(300,0)" font-size="40">
+	<path d="M50,350 C 50,50 150,350 150,50"/>
+	<circle cx="50" cy="350" r="20"/>
+      </g>
+    </slide>
+
+    <slide title="now simplify the pen">
+      <g stroke="black" stroke-width="2" fill="none" transform="translate(300,0)" font-size="40">
+	<path d="M50,350 C 50,50 150,350 150,50"/>
+	<path d="M70,350 L 60,367.320508075688772 L 40,367.320508075688772 L 30,350 L 40,332.679491924311227 L 60,332.679491924311227 z" />
+	<circle cx="70" cy="350" r="2" stroke="none" fill="red" />
+	<circle cx="60" cy="367.320508075688772" r="2" stroke="none" fill="orange" />
+	<circle cx="40" cy="367.320508075688772" r="2" stroke="none" fill="yellow" />
+	<circle cx="30" cy="350" r="2" stroke="none" fill="green" />
+	<circle cx="40" cy="332.679491924311227" r="2" stroke="orange" fill="blue" />
+	<circle cx="60" cy="332.679491924311227" r="2" stroke="none" fill="violet" />
+      </g>
+    </slide>
+
+    <slide title="ooh, pretty colors">
+      <g stroke="black" stroke-width="2" fill="none" transform="translate(300,0)" font-size="40">
+	<path stroke="#C0C0C0" d="M50,350 C 50,50 150,350 150,50"/>
+	<path d="M70,350 L 60,367.320508075688772 L 40,367.320508075688772 L 30,350 L 40,332.679491924311227 L 60,332.679491924311227 z" />
+	<circle cx="70" cy="350" r="2" stroke="none" fill="red" />
+	<circle cx="60" cy="367.320508075688772" r="2" stroke="none" fill="orange" />
+	<circle cx="40" cy="367.320508075688772" r="2" stroke="none" fill="yellow" />
+	<circle cx="30" cy="350" r="2" stroke="none" fill="green" />
+	<circle cx="40" cy="332.679491924311227" r="2" stroke="orange" fill="blue" />
+	<circle cx="60" cy="332.679491924311227" r="2" stroke="none" fill="violet" />
+	<path stroke="red" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(20,0)" />
+	<path stroke="orange" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(10, 17.320508075688772)" />
+	<path stroke="yellow" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-9.999999999999999, 17.320508075688772)"/>
+	<path stroke="green" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-19.999999999999999, 5.527147875260444e-75)"/>
+	<path stroke="blue" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-10, -17.320508075688772)"/>
+	<path stroke="violet" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(9.999999999999999, -17.320508075688772)"/>
+      </g>
+    </slide>
+
+    <slide title="...but ugly lumps">
+      <g stroke="black" stroke-width="2" fill="none" transform="translate(300,0)" font-size="40">
+	<path stroke="#C0C0C0" d="M50,350 C 50,50 150,350 150,50"/>
+	<path d="M70,350 L 60,367.320508075688772 L 40,367.320508075688772 L 30,350 L 40,332.679491924311227 L 60,332.679491924311227 z" />
+	<circle cx="70" cy="350" r="2" stroke="none" fill="red" />
+	<circle cx="60" cy="367.320508075688772" r="2" stroke="none" fill="orange" />
+	<circle cx="40" cy="367.320508075688772" r="2" stroke="none" fill="yellow" />
+	<circle cx="30" cy="350" r="2" stroke="none" fill="green" />
+	<circle cx="40" cy="332.679491924311227" r="2" stroke="orange" fill="blue" />
+	<circle cx="60" cy="332.679491924311227" r="2" stroke="none" fill="violet" />
+	<path stroke="red" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(20,0)" />
+	<path stroke="orange" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(10, 17.320508075688772)" />
+	<path stroke="yellow" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-9.999999999999999, 17.320508075688772)"/>
+	<path stroke="green" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-19.999999999999999, 5.527147875260444e-75)"/>
+	<path stroke="blue" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(-10, -17.320508075688772)"/>
+	<path stroke="violet" d="M50,350 C 50,50 150,350 150,50"
+	      transform="translate(9.999999999999999, -17.320508075688772)"/>
+
+	<circle stroke="black" stroke-width="2" fill="none"
+	  cx="53" cy="210" r="16" />
+	<circle stroke="black" stroke-width="2" fill="none"
+	  cx="148" cy="190" r="16" />
+      </g>
     </slide>
 
     <!-- Minkowksi sum, convolution of polygonal tracings -->
@@ -65,7 +254,7 @@
     <slide title="tessellation">
     </slide>
 
-    <!-- robust implementation, Hobby's algorithm -->
+    <!-- robust implementation, Hobby’s algorithm -->
 
     <slide title="rasterization">
     </slide>




More information about the cairo-commit mailing list