<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;action=history&amp;feed=atom</id>
		<title>SVG Essentials/Paths - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;action=history&amp;feed=atom"/>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;action=history"/>
		<updated>2013-05-21T12:45:28Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.11.0</generator>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=26165&amp;oldid=prev</id>
		<title>Newacct at 07:42, 15 April 2010</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=26165&amp;oldid=prev"/>
				<updated>2010-04-15T07:42:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 07:42, 15 April 2010&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 273:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 273:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; use Math::Trig;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 301:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 302:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($cx, $cy, $rx, $ry, $theta1, $delta, $phi) = @_;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($cx, $cy, $rx, $ry, $theta1, $delta, $phi) = @_;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($theta2, $pi);&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($x0, $y0, $x1, $y1, $large_arc, $sweep);&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;#&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$theta2 = $delta + $theta1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;     #   Convert angles to radians&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta1 = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;deg2rad(&lt;/ins&gt;$theta1&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;     #&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta2 = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;deg2rad(&lt;/ins&gt;$theta2&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;     $pi = atan2(1,1) * 4;       # approximation of pi&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$phi_r = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;deg2rad(&lt;/ins&gt;$phi&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;$theta2 = $delta + $theta1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta1 = $theta1 &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* $pi / 180.0&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta2 = $theta2 &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* $pi / 180.0&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $phi_r = $phi &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* $pi / 180.0&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 318:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 312:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   ending points&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   ending points&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $x0 = $cx + cos($phi_r) * $rx * cos($theta1) +&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$x0 = $cx + cos($phi_r) * $rx * cos($theta1) +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         sin(-$phi_r) * $ry * sin($theta1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         sin(-$phi_r) * $ry * sin($theta1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $y0 = $cy + sin($phi_r) * $rx * cos($theta1) +&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$y0 = $cy + sin($phi_r) * $rx * cos($theta1) +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         cos($phi_r) * $ry * sin($theta1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         cos($phi_r) * $ry * sin($theta1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $x1 = $cx + cos($phi_r) * $rx * cos($theta2) +&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$x1 = $cx + cos($phi_r) * $rx * cos($theta2) +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         sin(-$phi_r) * $ry * sin($theta2);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         sin(-$phi_r) * $ry * sin($theta2);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $y1 = $cy + sin($phi_r) * $rx * cos($theta2) +&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$y1 = $cy + sin($phi_r) * $rx * cos($theta2) +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         cos($phi_r) * $ry * sin($theta2);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         cos($phi_r) * $ry * sin($theta2);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $large_arc = ($delta &amp;gt; 180) ? 1 : 0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$large_arc = ($delta &amp;gt; 180) ? 1 : 0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sweep = ($delta &amp;gt; 0) ? 1 : 0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$sweep = ($delta &amp;gt; 0) ? 1 : 0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     return ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x1, $y1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     return ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x1, $y1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 382:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 376:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;use Math::Trig&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; sub acos&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;     atan2( sqrt(1 - $_[0] * $_[0]), $_[0] )&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; }&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; #&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 416:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 406:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x, $y) = @_;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x, $y) = @_;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my ($cx, $cy, $theta, $delta, $phi);&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # a plethora of temporary variables &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     my (&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $dx2, $dy2, $phi_r, $x1, $y1,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $rx_sq, $ry_sq,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $x1_sq, $y1_sq,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $sign, $sq, $coef,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $cx1, $cy1, $sx2, $sy2,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $p, $n,&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         $ux, $uy, $vx, $vy&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     );&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Compute 1/2 distance between current and final point&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Compute 1/2 distance between current and final point&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $dx2 = ($x0 - $x) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$dx2 = ($x0 - $x) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $dy2 = ($y0 - $y) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$dy2 = ($y0 - $y) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Convert from degrees to radians&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Convert from degrees to radians&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $pi = atan2(1, 1) * 4.0;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $phi %= 360;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $phi %= 360;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $phi_r = $phi &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* $pi / 180.0&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$phi_r = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;deg2rad(&lt;/ins&gt;$phi&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Compute (x1, y1)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Compute (x1, y1)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $x1 = cos($phi_r) * $dx2 + sin($phi_r) * $dy2;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$x1 = cos($phi_r) * $dx2 + sin($phi_r) * $dy2;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $y1 = -sin($phi_r) * $dx2 + cos($phi_r) * $dy2;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$y1 = -sin($phi_r) * $dx2 + cos($phi_r) * $dy2;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Make sure radii are large enough&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Make sure radii are large enough&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $rx = abs($rx); $ry = abs($ry);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $rx = abs($rx); $ry = abs($ry);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $rx_sq = $rx * $rx;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$rx_sq = $rx * $rx;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $ry_sq = $ry * $ry;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$ry_sq = $ry * $ry;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $x1_sq = $x1 * $x1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$x1_sq = $x1 * $x1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $y1_sq = $y1 * $y1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$y1_sq = $y1 * $y1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $radius_check = ($x1_sq / $rx_sq) + ($y1_sq / $ry_sq);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $radius_check = ($x1_sq / $rx_sq) + ($y1_sq / $ry_sq);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 460:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 437:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Step 2: Compute (cx1, cy1)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     # Step 2: Compute (cx1, cy1)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sign = ($large_arc == $sweep) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$sign = ($large_arc == $sweep) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sq = (($rx_sq * $ry_sq) - ($rx_sq * $y1_sq) - ($ry_sq * $x1_sq)) /&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$sq = (($rx_sq * $ry_sq) - ($rx_sq * $y1_sq) - ($ry_sq * $x1_sq)) /&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         (($rx_sq * $y1_sq) + ($ry_sq * $x1_sq));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;         (($rx_sq * $y1_sq) + ($ry_sq * $x1_sq));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sq = ($sq &amp;lt; 0) ? 0 : $sq;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sq = ($sq &amp;lt; 0) ? 0 : $sq;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $coef = &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;(&lt;/del&gt;$sign * sqrt($sq&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$coef = $sign * sqrt($sq);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $cx1 = $coef * (($rx * $y1) / $ry);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$cx1 = $coef * (($rx * $y1) / $ry);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $cy1 = $coef * -(($ry * $x1) / $rx);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$cy1 = $coef * -(($ry * $x1) / $rx);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   Step 3: Compute (cx, cy) from (cx1, cy1)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   Step 3: Compute (cx, cy) from (cx1, cy1)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sx2 = ($x0 + $x) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$sx2 = ($x0 + $x) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sy2 = ($y0 + $y) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$sy2 = ($y0 + $y) / 2.0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $cx = $sx2 + (cos($phi_r) * $cx1 - sin($phi_r) * $cy1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$cx = $sx2 + (cos($phi_r) * $cx1 - sin($phi_r) * $cy1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $cy = $sy2 + (sin($phi_r) * $cx1 + cos($phi_r) * $cy1);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$cy = $sy2 + (sin($phi_r) * $cx1 + cos($phi_r) * $cy1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   Step 4: Compute angle start and angle extent&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     #   Step 4: Compute angle start and angle extent&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $ux = ($x1 - $cx1) / $rx;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$ux = ($x1 - $cx1) / $rx;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $uy = ($y1 - $cy1) / $ry;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$uy = ($y1 - $cy1) / $ry;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $vx = (-$x1 - $cx1) / $rx;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$vx = (-$x1 - $cx1) / $rx;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $vy = (-$y1 - $cy1) / $ry;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$vy = (-$y1 - $cy1) / $ry;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $n = sqrt( ($ux * $ux) + ($uy * $uy) );&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$n = sqrt( ($ux * $ux) + ($uy * $uy) );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $p = $ux; # 1 * ux + 0 * uy&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$p = $ux; # 1 * ux + 0 * uy&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sign = ($uy &amp;lt; 0) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sign = ($uy &amp;lt; 0) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta = $sign * acos( $p / $n );&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$theta = $sign * acos( $p / $n );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta = $theta &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* 180 / $pi&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $theta = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;rad2deg(&lt;/ins&gt;$theta&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $n = sqrt(($ux * $ux + $uy * $uy) * ($vx * $vx + $vy * $vy));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $n = sqrt(($ux * $ux + $uy * $uy) * ($vx * $vx + $vy * $vy));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $p = $ux * $vx + $uy * $vy;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $p = $ux * $vx + $uy * $vy;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sign = (($ux * $vy - $uy * $vx) &amp;lt; 0) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $sign = (($ux * $vy - $uy * $vx) &amp;lt; 0) ? -1 : 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $delta = $sign * acos( $p / $n );&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;my &lt;/ins&gt;$delta = $sign * acos( $p / $n );&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $delta = $delta &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* 180 / $pi&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     $delta = &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;rad2deg(&lt;/ins&gt;$delta&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     if ($sweep == 0 &amp;amp;&amp;amp; $delta &amp;gt; 0)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;     if ($sweep == 0 &amp;amp;&amp;amp; $delta &amp;gt; 0)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:7372:newid:26165 --&gt;
&lt;/table&gt;</summary>
		<author><name>Newacct</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=7372&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=7372&amp;oldid=prev"/>
				<updated>2008-03-07T13:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:40, 7 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=6037&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=6037&amp;oldid=prev"/>
				<updated>2008-03-07T12:51:41Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:51, 7 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3704&amp;oldid=prev</id>
		<title>Evanlenz: 1 revision(s)</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3704&amp;oldid=prev"/>
				<updated>2008-03-06T23:40:34Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision(s)&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 23:40, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Evanlenz</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3703&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3703&amp;oldid=prev"/>
				<updated>2008-03-06T23:33:32Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 23:33, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3245&amp;oldid=prev</id>
		<title>Evanlenz: 1 revision(s)</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3245&amp;oldid=prev"/>
				<updated>2008-03-06T22:52:43Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision(s)&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:52, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Evanlenz</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3244&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=3244&amp;oldid=prev"/>
				<updated>2008-03-06T22:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:38, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2659&amp;oldid=prev</id>
		<title>Evanlenz: 1 revision(s)</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2659&amp;oldid=prev"/>
				<updated>2008-03-06T22:22:03Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision(s)&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:22, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;</summary>
		<author><name>Evanlenz</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2658&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2658&amp;oldid=prev"/>
				<updated>2008-03-06T22:21:01Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:21, 6 March 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-1. Result of using moveto and lineto'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-1. Result of using moveto and lineto'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt98&lt;/del&gt;.png|Result of using moveto&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt98&lt;/ins&gt;.png|Result of using moveto&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   and lineto]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   and lineto]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-2. Result of using closepath'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-2. Result of using closepath'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt99&lt;/del&gt;.png|Result of using closepath]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt99&lt;/ins&gt;.png|Result of using closepath]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-3. Result of drawing a diamond with a path'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-3. Result of drawing a diamond with a path'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt103&lt;/del&gt;.png|Result of drawing a diamond with a&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt103&lt;/ins&gt;.png|Result of drawing a diamond with a&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   path]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   path]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 191:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 191:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-4. Variations of the elliptical arc command'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-4. Variations of the elliptical arc command'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt106&lt;/del&gt;.png|Variations of the elliptical arc&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt106&lt;/ins&gt;.png|Variations of the elliptical arc&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   command]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   command]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 236:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 236:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-5. Result of using elliptical arc'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-5. Result of using elliptical arc'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt108&lt;/del&gt;.png|Result of using elliptical arc]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt108&lt;/ins&gt;.png|Result of using elliptical arc]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 562:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 562:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-6. How graphics programs draw Bézier curves'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-6. How graphics programs draw Bézier curves'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt113&lt;/del&gt;.png|How graphics programs draw Bézier curves]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt113&lt;/ins&gt;.png|How graphics programs draw Bézier curves]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 574:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 574:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-7. Visualizing a quadratic Bézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-7. Visualizing a quadratic Bézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt114&lt;/del&gt;.png|Visualizing a quadratic Bézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt114&lt;/ins&gt;.png|Visualizing a quadratic Bézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 590:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-8. Quadratic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-8. Quadratic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt117&lt;/del&gt;.png|Quadratic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt117&lt;/ins&gt;.png|Quadratic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 611:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 611:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-9. Smooth quadratic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-9. Smooth quadratic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt120&lt;/del&gt;.png|Smooth quadratic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt120&lt;/ins&gt;.png|Smooth quadratic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 623:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 623:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-10. Visualizing a cubic Bézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-10. Visualizing a cubic Bézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt121&lt;/del&gt;.png|Visualizing a cubic Bézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt121&lt;/ins&gt;.png|Visualizing a cubic Bézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 636:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 636:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-11. Result of cubic Bézier control point combinations'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-11. Result of cubic Bézier control point combinations'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt123&lt;/del&gt;.png|Result of cubic Bézier control point combinations]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt123&lt;/ins&gt;.png|Result of cubic Bézier control point combinations]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 646:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 646:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-12. Cubic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-12. Cubic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt125&lt;/del&gt;.png|Cubic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt125&lt;/ins&gt;.png|Cubic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 658:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 658:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-13. Smooth cubic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-13. Smooth cubic polybézier curve'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt127&lt;/del&gt;.png|Smooth cubic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt127&lt;/ins&gt;.png|Smooth cubic polybézier curve]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 749:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 749:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-14. Result of using different fill-rule values'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-14. Result of using different fill-rule values'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt137&lt;/del&gt;.png|Result of using different &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt137&lt;/ins&gt;.png|Result of using different &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   fill-rule values]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;   fill-rule values]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 763:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 763:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-15. Lines and arc'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-15. Lines and arc'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt139&lt;/del&gt;.png|Lines and arc]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt139&lt;/ins&gt;.png|Lines and arc]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 771:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 771:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-16. Lines and arc with markers'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-16. Lines and arc with markers'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt140&lt;/del&gt;.png|Lines and arc with markers]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt140&lt;/ins&gt;.png|Lines and arc with markers]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 797:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 797:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-17. Misplaced circular marker'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-17. Misplaced circular marker'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt141&lt;/del&gt;.png|Misplaced circular marker]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt141&lt;/ins&gt;.png|Misplaced circular marker]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 813:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 813:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-18. Correctly placed circular marker'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-18. Correctly placed circular marker'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt142&lt;/del&gt;.png|Correctly placed circular marker]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt142&lt;/ins&gt;.png|Correctly placed circular marker]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 848:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 848:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-19. Incorrectly oriented markers'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-19. Incorrectly oriented markers'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt143&lt;/del&gt;.png|Incorrectly oriented markers]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt143&lt;/ins&gt;.png|Incorrectly oriented markers]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 903:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 903:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-20. Using a single marker for all vertices'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''Figure 6-20. Using a single marker for all vertices'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials/I_6_tt144&lt;/del&gt;.png|Using a single marker for all vertices]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Image:SVG &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Essentials_I_6_tt144&lt;/ins&gt;.png|Using a single marker for all vertices]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:2420:newid:2658 --&gt;
&lt;/table&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	<entry>
		<id>http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2420&amp;oldid=prev</id>
		<title>Docbook2Wiki: Initial conversion from Docbook</title>
		<link rel="alternate" type="text/html" href="http://commons.oreilly.com/wiki/index.php?title=SVG_Essentials/Paths&amp;diff=2420&amp;oldid=prev"/>
				<updated>2008-03-04T22:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Initial conversion from Docbook&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SVG Essentials/TOC}}&lt;br /&gt;
All of the basic shapes described in [[SVG Essentials/Basic Shapes|Chapter 3]] are really shorthand forms for the more general &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; element. You are well advised to use these shortcuts; they help make your SVG more readable and more structured. The &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; element is more general; it draws the outline of any arbitrary shape by specifying a series of connected lines, arcs, and curves. This outline can be filled and drawn with a stroke, just as the basic shapes are. Additionally, these paths (as well as the shorthand basic shapes) may be used to define the outline of a clipping area or a transparency mask, as you will see in [[SVG Essentials/Clipping and Masking|Chapter 9]].&lt;br /&gt;
&lt;br /&gt;
All of the data describing an outline is in the &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; element's &amp;lt;tt&amp;gt;d&amp;lt;/tt&amp;gt; attribute (the &amp;lt;tt&amp;gt;d&amp;lt;/tt&amp;gt; stands for ''data''). The path data consists of one-letter commands, such as &amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; for ''moveto'' or &amp;lt;tt&amp;gt;L&amp;lt;/tt&amp;gt; for ''lineto'', followed by the coordinate information for that particular command.&lt;br /&gt;
&lt;br /&gt;
== moveto, lineto, and closepath ==&lt;br /&gt;
&lt;br /&gt;
Every path must begin with a ''moveto'' command. The command letter is a capital &amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt; followed by an ''x-'' and ''y-''coordinate, separated by commas or whitespace. This command sets the current location of the &amp;quot;pen&amp;quot; that's drawing the outline.&lt;br /&gt;
&lt;br /&gt;
This is followed by one or more ''lineto'' commands, denoted by a capital &amp;lt;tt&amp;gt;L&amp;lt;/tt&amp;gt;, also followed by ''x-'' and ''y-''coordinates, and separated by commas or whitespace. [[SVG Essentials/Paths#svgess-CHP-6-EX-1|Example 6-1]] has three paths. The first draws a single line, the second draws a right angle, and the third draws two thirty-degree angles. When you &amp;quot;pick up&amp;quot; the pen with another ''moveto'', you are starting a new subpath. Notice that the use of commas and whitespace as separators is different, but perfectly legal, in all three paths. The result is [[SVG Essentials/Paths#svgess-CHP-6-FIG-1|Figure 6-1]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-1&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-1. Using moveto and lineto'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;g style=&amp;quot;stroke: black; fill: none;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;amp;lt;!-- single line --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 10 10 L 100 10&amp;quot;/&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;amp;lt;!-- a right angle --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 10, 20  L 100, 20  L  100,50&amp;quot;/&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;amp;lt;!-- two thirty-degree angles --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 40 60, L 10 60, L 40 42.68,&lt;br /&gt;
        M 60 60, L 90 60, L 60 42.68&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examining the last path more closely:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Value !! Action&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;M 40 60&amp;lt;/tt&amp;gt; || Move pen to (40, 60)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 10 60&amp;lt;/tt&amp;gt; || Draw a line to (10, 60)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 40 42.68&amp;lt;/tt&amp;gt; || Draw a line to (40, 42.68)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;M 60 60&amp;lt;/tt&amp;gt; || Start a new subpath; move pen to (60, 60) — no line is drawn&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 90 60&amp;lt;/tt&amp;gt; || Draw a line to (90, 60)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 60 42.68&amp;lt;/tt&amp;gt; || Draw a line to (60, 42.68)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-1&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-1. Result of using moveto and lineto'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt98.png|Result of using moveto&lt;br /&gt;
   and lineto]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
'''Note'''&lt;br /&gt;
&lt;br /&gt;
You may have noticed that the path data doesn't look very much like the typical values for XML attributes. Because the entire path data is contained in one attribute rather than an individual element for each point or line segment, a path takes up less memory when read into a Document Object Model structure by an XML parser. Additionally, a path's compact notation allows a complex graphic to be transmitted without requiring a great deal of bandwidth.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; to draw a rectangle, you can draw all four lines, or you can draw the first three lines and then use the ''closepath'' command, denoted by a capital &amp;lt;tt&amp;gt;Z&amp;lt;/tt&amp;gt;, to draw a straight line back to the beginning point of the current subpath. [[SVG Essentials/Paths#svgess-CHP-6-EX-2|Example 6-2]] is the SVG for [[SVG Essentials/Paths#svgess-CHP-6-FIG-2|Figure 6-2]], which shows a rectangle drawn the hard way, a rectangle drawn with ''closepath'', and a path that draws two triangles by opening and closing two subpaths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-2&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-2. Using closepath'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;g style=&amp;quot;stroke: black; fill: none;&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;amp;lt;!-- rectangle; all four lines --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 10 10, L 40 10, L 40 30, L 10 30, L 10 10&amp;quot;/&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;amp;lt;!-- rectangle with closepath --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 60 10, L 90 10, L 90 30, L 60 30, Z&amp;quot;/&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;amp;lt;!-- two thirty-degree triangles --&amp;gt;&lt;br /&gt;
     &amp;lt;path d=&amp;quot;M 40 60, L 10 60, L 40 42.68, Z&lt;br /&gt;
        M 60 60, L 90 60, L 60 42.68, Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examining the last path more closely:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Value !! Action&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;M 40 60&amp;lt;/tt&amp;gt; || Move pen to (40, 50)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 10 60&amp;lt;/tt&amp;gt; || Draw a line to (10, 60)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 40 42.68&amp;lt;/tt&amp;gt; || Draw a line to (40, 42.68)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;Z&amp;lt;/tt&amp;gt; || Close path by drawing a straight line to (40, 60), where this subpath began&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;M 60 60&amp;lt;/tt&amp;gt; || Start a new subpath; move pen to (60, 60) — no line is drawn&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 90 60&amp;lt;/tt&amp;gt; || Draw a line to (90, 60)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;L 60 42.68&amp;lt;/tt&amp;gt; || Draw a line to (60, 42.68)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;Z&amp;lt;/tt&amp;gt; || Close path by drawing a straight line to (60, 60), where this subpath began&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-2&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-2. Result of using closepath'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt99.png|Result of using closepath]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relative moveto and lineto ==&lt;br /&gt;
&lt;br /&gt;
The preceding commands are all represented by uppercase letters, and the coordinates are presumed to be ''absolute'' coordinates. If you use a lowercase command letter, the coordinates are interpreted as being ''relative'' to the current pen position. Thus, the following two paths are equivalent:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 10 L 20 10 L 20 30  M 40 40 L 55 35&amp;quot;&lt;br /&gt;
     style=&amp;quot;stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 10 l 10  0 l  0 20  m 20 10 l 15 -5&amp;quot;&lt;br /&gt;
     style=&amp;quot;stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you start a path with a lowercase &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt; (''moveto''), its coordinates will be interpreted as an absolute position since there's no previous pen position from which to calculate a relative position. All the other commands in this chapter also have the same upper- and lowercase distinction. An uppercase command's coordinates are absolute and a lowercase command's coordinates are relative. The ''closepath'' command, which has no coordinates, has the same effect in both upper- and lowercase.&lt;br /&gt;
&lt;br /&gt;
== Path Shortcuts ==&lt;br /&gt;
&lt;br /&gt;
If content is king and design is queen, then bandwidth efficiency is the royal courtier who keeps the palace running smoothly. Since any non-trivial drawing will have paths with many tens of coordinate pairs, the &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; element has shortcuts that allow you to represent a path in as few bytes as possible.&lt;br /&gt;
&lt;br /&gt;
=== The Horizontal lineto and Vertical lineto Commands ===&lt;br /&gt;
&lt;br /&gt;
Since horizontal and vertical lines are so common, a path may specify a horizontal line with an &amp;lt;tt&amp;gt;H&amp;lt;/tt&amp;gt; command followed by an absolute ''x''-coordinate or an &amp;lt;tt&amp;gt;h&amp;lt;/tt&amp;gt; command followed by a relative ''x''-coordinate. Similarly, a vertical line is specified with a &amp;lt;tt&amp;gt;V&amp;lt;/tt&amp;gt; command followed by an absolute ''y''-coordinate or a &amp;lt;tt&amp;gt;v&amp;lt;/tt&amp;gt; command followed by a relative ''y''-coordinate.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Shortcut !! Equivalent to !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;H 20&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;L 20 ''current_y''&amp;lt;/tt&amp;gt; || Draws a line to absolute location (20, &amp;lt;tt&amp;gt;''current_y''&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;h 20&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;l 20 0&amp;lt;/tt&amp;gt; || Draws a line to (&amp;lt;tt&amp;gt;''current_x''&amp;lt;/tt&amp;gt;+20, &amp;lt;tt&amp;gt;''current_y''&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;V 20&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;L ''current_x'' 20&amp;lt;/tt&amp;gt; || Draws a line to absolute location (&amp;lt;tt&amp;gt;''current_x''&amp;lt;/tt&amp;gt;, 20)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;v 20&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;l ''current_x'' 20&amp;lt;/tt&amp;gt; || Draws a line to location (&amp;lt;tt&amp;gt;''current_x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''current_y''&amp;lt;/tt&amp;gt;+20)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus, the following path draws a rectangle 15 units in width and 25 units in height, with the upper left corner at coordinates (12, 24).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 12 24 h 15 v 25 h -15 z&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notational Shortcuts for a Path ===&lt;br /&gt;
&lt;br /&gt;
Paths can also be made shorter by applying the following two rules:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;div&amp;gt;You may place multiple sets of coordinates after an &amp;lt;tt&amp;gt;L&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;l&amp;lt;/tt&amp;gt;, just as you do in the &amp;lt;tt&amp;gt;&amp;lt;polyline&amp;gt;&amp;lt;/tt&amp;gt; element. The following six paths all draw the same diamond that is shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-3|Figure 6-3]]; the first three are in absolute coordinates and the last three in relative coordinates. The third and sixth paths have an interesting twist — if you place multiple pairs of coordinates after a ''moveto'', all the pairs after the first are presumed to be preceded by a ''lineto''.&amp;lt;ref&amp;gt;You can also put multiple single coordinates after an ''horizontal lineto'' or ''vertical lineto'', although it's rather pointless to do so. &amp;lt;tt&amp;gt;H 25 35 45&amp;lt;/tt&amp;gt; is the same as &amp;lt;tt&amp;gt;H 45&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;v 11 13 15&amp;lt;/tt&amp;gt; is the same as &amp;lt;tt&amp;gt;v 39&amp;lt;/tt&amp;gt;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 30 30 L 55 5 L 80 30 L 55 55 Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 30 30 L 55 5 80 30 55 55 Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 30 30 55 5 80 30 55 55 Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;m 30 30 l 25 -25 l 25 25 l -25 25 z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;m 30 30 l 25 -25 25 25 -25 25 z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;m 30 30 25 -25 25 25 -25 25 z&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-3&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-3. Result of drawing a diamond with a path'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt103.png|Result of drawing a diamond with a&lt;br /&gt;
   path]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;div&amp;gt;Any whitespace that is not necessary may be eliminated. You don't need a blank after a command letter since all commands are one letter only. You don't need a blank between a number and a command since the command letter can't be part of the number. You don't need a blank between a positive and a negative number since the leading minus sign of the negative number can't be a part of the positive number. This lets you reduce the third and sixth paths in the preceding listing even further:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 30 55 5 80 30 55 55Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;m30 30 25-25 25 25-25 25z&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example of the whitespace elimination rule in action is shown by the example that drew a rectangle 15 units in width and 25 units in height, with the upper left corner at coordinates (12, 24):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 12 24 h 15 v 25 h -15 z&amp;quot;/&amp;gt; &amp;amp;lt;!-- original --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M12 24h15v25h-15z&amp;quot;/&amp;gt; &amp;amp;lt;!-- shorter --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Elliptical Arc ==&lt;br /&gt;
&lt;br /&gt;
Lines are simple; two points on a path uniquely determine the line segment between them. Since an infinite number of curves can be drawn between two points, you must give additional information to draw a curved path between them. The simplest of the curves we will examine is the elliptical arc — that is, drawing a section of an ellipse that connects two points.&lt;br /&gt;
&lt;br /&gt;
Although arcs are visually the simplest curves, specifying a unique arc requires the ''most'' information. The first pieces of information you need to specify are the ''x''- and ''y''-radii of the ellipse on which the points lie. This narrows it down to two possible ellipses, as you can see in section (a) of [[SVG Essentials/Paths#svgess-CHP-6-FIG-4|Figure 6-4]]. The two points divide the two ellipses into four arcs. Two of them, (b) and (c), are arcs that measure less than 180 degrees. The other two, (d) and (e) are greater than 180 degrees. If you look at (b) and (c), you will notice that they are differentiated by their direction; (b) is drawn in the direction of increasing negative angle, and (c) in the direction of increasing positive angle. The same relationship holds true between (d) and (e).&lt;br /&gt;
&lt;br /&gt;
But wait — we still haven't uniquely specified the potential arcs! There's no law that says that the ellipse has to have its ''x''-radius parallel to the ''x''-axis. Part (f) of [[SVG Essentials/Paths#svgess-CHP-6-FIG-4|Figure 6-4]] shows the two points with their candidate ellipses rotated thirty degrees with respect to the ''x''-axis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-4&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-4. Variations of the elliptical arc command'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt106.png|Variations of the elliptical arc&lt;br /&gt;
   command]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
([[SVG Essentials/Paths#svgess-CHP-6-FIG-4|Figure 6-4]] is adapted from the one found in section 8.3.8 of the World Wide Web Consortium's SVG specification.)&lt;br /&gt;
&lt;br /&gt;
Thus, an arc command begins with the &amp;lt;tt&amp;gt;A&amp;lt;/tt&amp;gt; abbreviation for absolute coordinates or &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; for relative coordinates, and is followed by seven parameters:&lt;br /&gt;
&lt;br /&gt;
* The ''x''- and ''y''-radius of the ellipse on which the points lie.&lt;br /&gt;
* The &amp;lt;tt&amp;gt;''x-axis-rotation''&amp;lt;/tt&amp;gt; of the ellipse.&lt;br /&gt;
* The &amp;lt;tt&amp;gt;''large-arc-flag''&amp;lt;/tt&amp;gt;, which is zero if the arc's measure is less than 180 degrees, or one if the arc's measure is greater than or equal to 180 degrees.&lt;br /&gt;
* The &amp;lt;tt&amp;gt;''sweep-flag''&amp;lt;/tt&amp;gt;, which is zero if the arc is to be drawn in the negative angle direction, or one if the arc is to be drawn in the positive angle direction.&lt;br /&gt;
* The ending ''x''- and ''y''- coordinates of the ending point. (The starting point is determined by the last point drawn or the last ''moveto'' command.)&lt;br /&gt;
&lt;br /&gt;
Here are the paths used to draw the elliptical arcs in sections (b) through (e) of [[SVG Essentials/Paths#svgess-CHP-6-FIG-4|Figure 6-4]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 125,75 A100,50 0 0,0 225,125&amp;quot;/&amp;gt; &amp;amp;lt;!-- b --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 125,75 A100,50 0 0,1 225,125&amp;quot;/&amp;gt; &amp;amp;lt;!-- c --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 125,75 A100,50 0 1,0 225,125&amp;quot;/&amp;gt; &amp;amp;lt;!-- d --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 125,75 A100,50 0 1,1 225,125&amp;quot;/&amp;gt; &amp;amp;lt;!-- e --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a further example, let's enhance the background that we started in [[SVG Essentials/Document Structure#svgess-CHP-4-EX-8|Example 4-8]] to complete the yin/yang symbol that is part of the Korean flag. [[SVG Essentials/Paths#svgess-CHP-6-EX-3|Example 6-3]] keeps the full ellipses as &amp;lt;tt&amp;gt;&amp;lt;ellipse&amp;gt;&amp;lt;/tt&amp;gt; elements, but creates the semicircles that it needs with paths. The result is shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-5|Figure 6-5]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-3&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-3. Using elliptical arc'''&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;!-- gray drop shadow --&amp;gt;&lt;br /&gt;
 &amp;lt;ellipse cx=&amp;quot;154&amp;quot; cy=&amp;quot;154&amp;quot; rx=&amp;quot;150&amp;quot; ry=&amp;quot;120&amp;quot; style=&amp;quot;fill: #999999;&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;!-- light blue ellipse --&amp;gt;&lt;br /&gt;
 &amp;lt;ellipse cx=&amp;quot;152&amp;quot; cy=&amp;quot;152&amp;quot; rx=&amp;quot;150&amp;quot; ry=&amp;quot;120&amp;quot; style=&amp;quot;fill: #cceeff;&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;!-- large light red semicircle fills upper half,&lt;br /&gt;
      followed by small light red semicircle that dips into&lt;br /&gt;
      lower left half of symbol --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 302 152 A 150 120, 0, 1, 0, 2 152&lt;br /&gt;
     A 75 60, 0, 1, 0, 152 152&amp;quot; style=&amp;quot;fill: #ffcccc;&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;!-- light blue semicircle rises into upper right half of symbol --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 152 152 A 75 60, 0, 1, 1, 302 152&amp;quot; style=&amp;quot;fill: #cceeff;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-5&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-5. Result of using elliptical arc'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt108.png|Result of using elliptical arc]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technique: Converting from Other Arc Formats ==&lt;br /&gt;
&lt;br /&gt;
Some other vector graphics systems let you specify an arc by defining a center point for the ellipse, its ''x''- and ''y''-radius, the starting angle, and the extent of the angle's arc. This is a straightforward method of specification, and is excellent for drawing arcs as single objects. This, paradoxically, is exactly why SVG instead chooses such a seemingly eccentric method to specify arcs. In SVG, an arc is not presumed to be living in lonely splendor; it is intended to be part of a connected path of lines and curves. (For example, a rounded rectangle is precisely that — a series of lines and elliptical arcs.) Thus, it makes sense to specify an arc by its endpoints.&lt;br /&gt;
&lt;br /&gt;
Sometimes, though, you do want an isolated semicircle (or, more accurately, semi-ellipse). Presume that you have an ellipse specified as:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ellipse cx=&amp;quot;''cx''&amp;quot; cy=&amp;quot;''cy''&amp;quot; rx=&amp;quot;''rx''&amp;quot; ry=&amp;quot;''ry''&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are the paths to draw the four possible semi-ellipses:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;!-- northern hemisphere --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M ''cx''-''rx'' &lt;br /&gt;
             ''cy'' A ''rx'' &lt;br /&gt;
             ''ry'' 0 1 1 ''cx''+''rx'' &lt;br /&gt;
             ''cy''&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;amp;lt;!-- southern hemipshere --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M ''cx''-''rx'' &lt;br /&gt;
             ''cy'' A ''rx'' &lt;br /&gt;
             ''ry'' 0 1 0 ''cx''+''rx'' &lt;br /&gt;
             ''cy''&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;amp;lt;!-- eastern hemisphere --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M ''cx'' &lt;br /&gt;
             ''cy''-''ry'' A ''rx'' &lt;br /&gt;
             ''ry'' 0 1 1 ''cx'' &lt;br /&gt;
             ''cy''+''ry''&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;amp;lt;!-- western hemisphere --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M ''cx'' &lt;br /&gt;
             ''cy''-''ry'' A ''rx'' &lt;br /&gt;
             ''ry'' 0 1 0 ''cx'' &lt;br /&gt;
             ''cy''+''ry''&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the more general case, when you wish to draw an arbitrary arc that has been specified in &amp;quot;center-and-angles&amp;quot; notation and wish to convert it to SVG's &amp;quot;endpoint-and-sweep&amp;quot; format, use the following Perl script. It prompts you for center coordinates, radii, starting angle, and angle extent. The output is a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; tag that you can insert into your SVG files.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 #   Convert an elliptical arc based around a central point&lt;br /&gt;
 #   to an elliptical arc parameterized for SVG.&lt;br /&gt;
 #&lt;br /&gt;
 #   Input is a list containing:&lt;br /&gt;
 #       center x coordinate&lt;br /&gt;
 #       center y coordinate&lt;br /&gt;
 #       x-radius of ellipse&lt;br /&gt;
 #       y-radius of ellipse&lt;br /&gt;
 #       beginning angle of arc in degrees&lt;br /&gt;
 #       arc extent in degrees&lt;br /&gt;
 #       x-axis rotation angle in degrees&lt;br /&gt;
 #&lt;br /&gt;
 #   Output is a list containing:&lt;br /&gt;
 #&lt;br /&gt;
 #       x-coordinate of beginning of arc&lt;br /&gt;
 #       y-coordinate of beginning of arc&lt;br /&gt;
 #       x-radius of ellipse&lt;br /&gt;
 #       y-radius of ellipse&lt;br /&gt;
 #       large-arc-flag as defined in SVG specification&lt;br /&gt;
 #       sweep-flag  as defined in SVG specification&lt;br /&gt;
 #       x-coordinate of endpoint of arc&lt;br /&gt;
 #       y-coordinate of endpoint of arc&lt;br /&gt;
 #&lt;br /&gt;
 sub convert_to_svg&lt;br /&gt;
 {&lt;br /&gt;
     my ($cx, $cy, $rx, $ry, $theta1, $delta, $phi) = @_;&lt;br /&gt;
     my ($theta2, $pi);&lt;br /&gt;
     my ($x0, $y0, $x1, $y1, $large_arc, $sweep);&lt;br /&gt;
 &lt;br /&gt;
     #&lt;br /&gt;
     #   Convert angles to radians&lt;br /&gt;
     #&lt;br /&gt;
     $pi = atan2(1,1) * 4;       # approximation of pi&lt;br /&gt;
 &lt;br /&gt;
     $theta2 = $delta + $theta1;&lt;br /&gt;
     $theta1 = $theta1 * $pi / 180.0;&lt;br /&gt;
     $theta2 = $theta2 * $pi / 180.0;&lt;br /&gt;
     $phi_r = $phi * $pi / 180.0;&lt;br /&gt;
 &lt;br /&gt;
     #&lt;br /&gt;
     #   Figure out the coordinates of the beginning and&lt;br /&gt;
     #   ending points&lt;br /&gt;
     #&lt;br /&gt;
     $x0 = $cx + cos($phi_r) * $rx * cos($theta1) +&lt;br /&gt;
         sin(-$phi_r) * $ry * sin($theta1);&lt;br /&gt;
     $y0 = $cy + sin($phi_r) * $rx * cos($theta1) +&lt;br /&gt;
         cos($phi_r) * $ry * sin($theta1);&lt;br /&gt;
 &lt;br /&gt;
     $x1 = $cx + cos($phi_r) * $rx * cos($theta2) +&lt;br /&gt;
         sin(-$phi_r) * $ry * sin($theta2);&lt;br /&gt;
     $y1 = $cy + sin($phi_r) * $rx * cos($theta2) +&lt;br /&gt;
         cos($phi_r) * $ry * sin($theta2);&lt;br /&gt;
 &lt;br /&gt;
     $large_arc = ($delta &amp;gt; 180) ? 1 : 0;&lt;br /&gt;
     $sweep = ($delta &amp;gt; 0) ? 1 : 0;&lt;br /&gt;
     &lt;br /&gt;
     return ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x1, $y1);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 #   Request input&lt;br /&gt;
 #&lt;br /&gt;
 print &amp;quot;Enter center x,y coordinates &amp;gt; &amp;quot;;&lt;br /&gt;
 $data = &amp;lt;&amp;gt;;&lt;br /&gt;
 $data =~ s/,/ /g;&lt;br /&gt;
 ($cx, $cy) = split /\s+/, $data;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter x and y radii &amp;gt; &amp;quot;;&lt;br /&gt;
 $data = &amp;lt;&amp;gt;;&lt;br /&gt;
 $data =~ s/,/ /g;&lt;br /&gt;
 ($rx, $ry) = split/\s+/, $data;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter starting angle in degrees &amp;gt; &amp;quot;;&lt;br /&gt;
 $theta = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $theta;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter angle extent in degrees &amp;gt; &amp;quot;;&lt;br /&gt;
 $delta = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $delta;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter angle of rotation in degrees &amp;gt; &amp;quot;;&lt;br /&gt;
 $phi = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $phi;&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 #   Echo original data&lt;br /&gt;
 #&lt;br /&gt;
 print &amp;quot;(cx,cy)=($cx,$cy)  rx=$rx ry=$ry &amp;quot;,&lt;br /&gt;
     &amp;quot;start angle=$theta extent=$delta rotate=$phi\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 ($x0, $y0, $rx, $ry, $phi, $large_arc_flag, $sweep_flag, $x1, $y1) =&lt;br /&gt;
     convert_to_svg( $cx, $cy, $rx, $ry, $theta, $delta, $phi);&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 #   Produce a &amp;lt;path&amp;gt; element that fits the&lt;br /&gt;
 #   specifications&lt;br /&gt;
 #&lt;br /&gt;
 print &amp;quot;&amp;lt;path d=\&amp;quot;M $x0 $y0 &amp;quot;,   # Moveto initial point&lt;br /&gt;
     &amp;quot;A $rx $ry &amp;quot;,               # Arc command and radii,&lt;br /&gt;
     &amp;quot;$phi &amp;quot;,                    # angle of rotation,&lt;br /&gt;
     &amp;quot;$large_arc_flag &amp;quot;,         # the &amp;quot;large-arc&amp;quot; flag,&lt;br /&gt;
     &amp;quot;$sweep_flag &amp;quot;,             # the &amp;quot;sweep&amp;quot; flag,&lt;br /&gt;
     &amp;quot;$x1 $y1\&amp;quot;/&amp;gt;\n&amp;quot;;            # and the endpoint&lt;br /&gt;
&lt;br /&gt;
If you wish to convert from the SVG format to a &amp;quot;center-and-angles&amp;quot; format, the mathematics is considerably more complex. You can see the formulas in detail in the SVG specification. This Perl script was adapted from the code in the Apache XML Batik project.&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 &lt;br /&gt;
 sub acos&lt;br /&gt;
 {&lt;br /&gt;
     atan2( sqrt(1 - $_[0] * $_[0]), $_[0] );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 #   Convert an elliptical arc based around a central point&lt;br /&gt;
 #   to an elliptical arc parameterized for SVG.&lt;br /&gt;
 #&lt;br /&gt;
 #   Input is a list containing:&lt;br /&gt;
 #&lt;br /&gt;
 #       x-coordinate of beginning of arc&lt;br /&gt;
 #       y-coordinate of beginning of arc&lt;br /&gt;
 #       x-radius of ellipse&lt;br /&gt;
 #       y-radius of ellipse&lt;br /&gt;
 #       large-arc-flag as defined in SVG specification&lt;br /&gt;
 #       sweep-flag  as defined in SVG specification&lt;br /&gt;
 #       x-coordinate of endpoint of arc&lt;br /&gt;
 #       y-coordinate of endpoint of arc&lt;br /&gt;
 #&lt;br /&gt;
 #   Output is a list containing:&lt;br /&gt;
 #       center x coordinate&lt;br /&gt;
 #       center y coordinate&lt;br /&gt;
 #       x-radius of ellipse&lt;br /&gt;
 #       y-radius of ellipse&lt;br /&gt;
 #       beginning angle of arc in degrees&lt;br /&gt;
 #       arc extent in degrees&lt;br /&gt;
 #       x-axis rotation angle in degrees&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 sub convert_from_svg&lt;br /&gt;
 {&lt;br /&gt;
     my ($x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, $x, $y) = @_;&lt;br /&gt;
     my ($cx, $cy, $theta, $delta, $phi);&lt;br /&gt;
     &lt;br /&gt;
     # a plethora of temporary variables &lt;br /&gt;
     my (&lt;br /&gt;
         $dx2, $dy2, $phi_r, $x1, $y1,&lt;br /&gt;
         $rx_sq, $ry_sq,&lt;br /&gt;
         $x1_sq, $y1_sq,&lt;br /&gt;
         $sign, $sq, $coef,&lt;br /&gt;
         $cx1, $cy1, $sx2, $sy2,&lt;br /&gt;
         $p, $n,&lt;br /&gt;
         $ux, $uy, $vx, $vy&lt;br /&gt;
     );&lt;br /&gt;
         &lt;br /&gt;
     # Compute 1/2 distance between current and final point&lt;br /&gt;
     $dx2 = ($x0 - $x) / 2.0;&lt;br /&gt;
     $dy2 = ($y0 - $y) / 2.0;&lt;br /&gt;
 &lt;br /&gt;
     # Convert from degrees to radians&lt;br /&gt;
     $pi = atan2(1, 1) * 4.0;&lt;br /&gt;
     $phi %= 360;&lt;br /&gt;
     $phi_r = $phi * $pi / 180.0;&lt;br /&gt;
 &lt;br /&gt;
     # Compute (x1, y1)&lt;br /&gt;
     $x1 = cos($phi_r) * $dx2 + sin($phi_r) * $dy2;&lt;br /&gt;
     $y1 = -sin($phi_r) * $dx2 + cos($phi_r) * $dy2;&lt;br /&gt;
 &lt;br /&gt;
     # Make sure radii are large enough&lt;br /&gt;
     $rx = abs($rx); $ry = abs($ry);&lt;br /&gt;
     $rx_sq = $rx * $rx;&lt;br /&gt;
     $ry_sq = $ry * $ry;&lt;br /&gt;
     $x1_sq = $x1 * $x1;&lt;br /&gt;
     $y1_sq = $y1 * $y1;&lt;br /&gt;
 &lt;br /&gt;
     $radius_check = ($x1_sq / $rx_sq) + ($y1_sq / $ry_sq);&lt;br /&gt;
     if ($radius_check &amp;gt; 1)&lt;br /&gt;
     {&lt;br /&gt;
         $rx *= sqrt($radius_check);&lt;br /&gt;
         $ry *= sqrt($adius_check);&lt;br /&gt;
         $rx_sq = $rx * $rx;&lt;br /&gt;
         $ry_sq = $ry * $ry;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     # Step 2: Compute (cx1, cy1)&lt;br /&gt;
 &lt;br /&gt;
     $sign = ($large_arc == $sweep) ? -1 : 1;&lt;br /&gt;
     $sq = (($rx_sq * $ry_sq) - ($rx_sq * $y1_sq) - ($ry_sq * $x1_sq)) /&lt;br /&gt;
         (($rx_sq * $y1_sq) + ($ry_sq * $x1_sq));&lt;br /&gt;
     $sq = ($sq &amp;lt; 0) ? 0 : $sq;&lt;br /&gt;
     $coef = ($sign * sqrt($sq));&lt;br /&gt;
     $cx1 = $coef * (($rx * $y1) / $ry);&lt;br /&gt;
     $cy1 = $coef * -(($ry * $x1) / $rx);&lt;br /&gt;
 &lt;br /&gt;
     #   Step 3: Compute (cx, cy) from (cx1, cy1)&lt;br /&gt;
 &lt;br /&gt;
     $sx2 = ($x0 + $x) / 2.0;&lt;br /&gt;
     $sy2 = ($y0 + $y) / 2.0;&lt;br /&gt;
 &lt;br /&gt;
     $cx = $sx2 + (cos($phi_r) * $cx1 - sin($phi_r) * $cy1);&lt;br /&gt;
     $cy = $sy2 + (sin($phi_r) * $cx1 + cos($phi_r) * $cy1);&lt;br /&gt;
 &lt;br /&gt;
     #   Step 4: Compute angle start and angle extent&lt;br /&gt;
 &lt;br /&gt;
     $ux = ($x1 - $cx1) / $rx;&lt;br /&gt;
     $uy = ($y1 - $cy1) / $ry;&lt;br /&gt;
     $vx = (-$x1 - $cx1) / $rx;&lt;br /&gt;
     $vy = (-$y1 - $cy1) / $ry;&lt;br /&gt;
     $n = sqrt( ($ux * $ux) + ($uy * $uy) );&lt;br /&gt;
     $p = $ux; # 1 * ux + 0 * uy&lt;br /&gt;
     $sign = ($uy &amp;lt; 0) ? -1 : 1;&lt;br /&gt;
 &lt;br /&gt;
     $theta = $sign * acos( $p / $n );&lt;br /&gt;
     $theta = $theta * 180 / $pi;&lt;br /&gt;
 &lt;br /&gt;
     $n = sqrt(($ux * $ux + $uy * $uy) * ($vx * $vx + $vy * $vy));&lt;br /&gt;
     $p = $ux * $vx + $uy * $vy;&lt;br /&gt;
     $sign = (($ux * $vy - $uy * $vx) &amp;lt; 0) ? -1 : 1;&lt;br /&gt;
     $delta = $sign * acos( $p / $n );&lt;br /&gt;
     $delta = $delta * 180 / $pi;&lt;br /&gt;
 &lt;br /&gt;
     if ($sweep == 0 &amp;amp;&amp;amp; $delta &amp;gt; 0)&lt;br /&gt;
     {&lt;br /&gt;
         $delta -= 360;&lt;br /&gt;
     }&lt;br /&gt;
     elsif ($sweep == 1 &amp;amp;&amp;amp; $delta &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
         $delta += 360;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     $delta %= 360;&lt;br /&gt;
     $theta %= 360;&lt;br /&gt;
     &lt;br /&gt;
     return ($cx, $cy, $rx, $ry, $theta, $delta, $phi);&lt;br /&gt;
 }&lt;br /&gt;
      &lt;br /&gt;
 #&lt;br /&gt;
 #   Request input&lt;br /&gt;
 #&lt;br /&gt;
 print &amp;quot;Enter starting x,y coordinates &amp;gt; &amp;quot;;&lt;br /&gt;
 $data = &amp;lt;&amp;gt;;&lt;br /&gt;
 $data =~ s/,/ /g;&lt;br /&gt;
 ($x0, $y0) = split /\s+/, $data;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter ending x,y coordinates &amp;gt; &amp;quot;;&lt;br /&gt;
 $data = &amp;lt;&amp;gt;;&lt;br /&gt;
 $data =~ s/,/ /g;&lt;br /&gt;
 ($x, $y) = split /\s+/, $data;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter x and y radii &amp;gt; &amp;quot;;&lt;br /&gt;
 $data = &amp;lt;&amp;gt;;&lt;br /&gt;
 $data =~ s/,/ /g;&lt;br /&gt;
 ($rx, $ry) = split/\s+/, $data;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Enter rotation angle in degrees &amp;quot;;&lt;br /&gt;
 $phi = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $phi;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Large arc flag (0=no, 1=yes) &amp;gt; &amp;quot;;&lt;br /&gt;
 $large_arc = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $large_arc;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Sweep flag (0=negative, 1=positive) &amp;gt; &amp;quot;;&lt;br /&gt;
 $sweep = &amp;lt;&amp;gt;;&lt;br /&gt;
 chomp $sweep;&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;From ($x0,$y0) to ($x,$y) rotate $phi&amp;quot;,&lt;br /&gt;
     &amp;quot; large arc=$large_arc sweep=$sweep\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 ($cx, $cy, $rx, $ry, $theta, $delta, $phi) =&lt;br /&gt;
     convert_from_svg( $x0, $y0, $rx, $ry, $phi, $large_arc, $sweep, &lt;br /&gt;
        $x, $y );&lt;br /&gt;
 &lt;br /&gt;
 print &amp;quot;Ellipse center = ($cx, $cy)\n&amp;quot;;&lt;br /&gt;
 print &amp;quot;Start angle = $theta\n&amp;quot;;&lt;br /&gt;
 print &amp;quot;Angle extent = $delta\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Bézier Curves ==&lt;br /&gt;
&lt;br /&gt;
Arcs can be characterized as clean and functional, but one would rarely use the word &amp;quot;graceful&amp;quot; to describe them. If you want graceful, you need to use curves which are produced by graphing quadratic and cubic equations. Mathematicians have known about these curves for literally hundreds of years, but drawing them was always a computationally demanding task. This changed when Pierre Bézier, working for French car manufacturer Rénault and Paul de Casteljau, an engineer for Citroën, independently discovered a computationally convenient way to generate these curves.&lt;br /&gt;
&lt;br /&gt;
If you have used graphics programs like Adobe Illustrator, you draw these Bézier curves by specifying two points and then moving a &amp;quot;handle&amp;quot; as shown in the following diagram. The end of this handle is called the control point, because it controls the shape of the curve. As you move the handle, the curve changes in a way that, to the uninitiated, is completely mystifying. Mike Woodburn, a graphic designer at Key Point Software, suggests [[SVG Essentials/Paths#svgess-CHP-6-FIG-6|Figure 6-6]] as a way to visualize how the control point and the curve interact: imagine that the line is made of flexible metal. Inside the control point is a magnet; the closer a point is to the control point, the more strongly it is attracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-6&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-6. How graphics programs draw Bézier curves'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt113.png|How graphics programs draw Bézier curves]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way to visualize the role of the control point is based on the de Casteljau method of constructing the curves. We will use this approach in the following sections. For further details on the underlying mathematics, presented in a remarkably lucid fashion, see this web site: ''http://graphics.cs.ucdavis.edu/GraphicsNotes/Bezier-Curves/Bezier-Curves.html''.&lt;br /&gt;
&lt;br /&gt;
=== Quadratic Bézier Curves ===&lt;br /&gt;
&lt;br /&gt;
The simplest of the Bézier curves is the quadratic curve. You specify a beginning point, an ending point, and a control point. Imagine two tent poles placed at the endpoints of the line. These tent poles meet at the control point. Stretched between the centers of the tent poles is a rubber band. The place where the curve bends is tied to the exact center of that rubber band. This situation is shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-7|Figure 6-7]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-7&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-7. Visualizing a quadratic Bézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt114.png|Visualizing a quadratic Bézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programs like Adobe Illustrator show you only one of the &amp;quot;tent poles.&amp;quot; The next time you're using such a program, mentally add in the second pole and the resulting curves will be far less mysterious.&lt;br /&gt;
&lt;br /&gt;
That's the concept; now for the practical matter of actually producing such a curve in SVG. You specify a quadratic curve in a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; data with the &amp;lt;tt&amp;gt;Q&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;q&amp;lt;/tt&amp;gt; command. The command is followed by two sets of coordinates that specify a control point and an endpoint. The uppercase command implies absolute coordinates; lowercase implies relative coordinates. The curve in [[SVG Essentials/Paths#svgess-CHP-6-FIG-7|Figure 6-7]] was drawn from (30, 75) to (300, 120) with the control point at (240, 30), and was specified in SVG as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 75 Q 240 30, 300 120&amp;quot; style=&amp;quot;stroke: black; fill: none;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may specify several sets of coordinates after a quadratic curve command. This will generate a polybézier curve. Presume you want a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; that draws a curve from (30, 100) to (100, 100) with a control point at (80, 30) and then continues with a curve to (200, 80) with a control point at (130, 65). Here is the SVG for this path, with control point coordinates in bold. The result is shown in the left half of [[SVG Essentials/Paths#svgess-CHP-6-FIG-8|Figure 6-8]]; the control points and lines are shown in the right half of the figure.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 100 Q '''80 30''', 100 100, '''130 65''', 200 80&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-8&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-8. Quadratic polybézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt117.png|Quadratic polybézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are probably wondering, &amp;quot;What happened to `graceful?' That curve is just lumpy.&amp;quot; This is an accurate assessment. Just because curves are connected doesn't mean that they will look good together. That's why SVG provides the ''smooth quadratic curve'' command, which is denoted by the letter &amp;lt;tt&amp;gt;T&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;t&amp;lt;/tt&amp;gt; if you want to use relative coordinates). The command is followed by the next endpoint of the curve; the control point is calculated automatically, as the specification says, by &amp;quot;reflection of the control point on the previous command relative to the current point.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
'''Note'''&lt;br /&gt;
&lt;br /&gt;
For the mathematically inclined, the new control point &amp;lt;tt&amp;gt;''x2''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y2''&amp;lt;/tt&amp;gt; is calculated from the curve's starting point &amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt; and the previous control point &amp;lt;tt&amp;gt;''x1''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y1''&amp;lt;/tt&amp;gt; with these formulas: &lt;br /&gt;
&lt;br /&gt;
 x2 = 2 * x - x1&lt;br /&gt;
 y2 = 2 * y - y1&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a quadratic Bézier curve drawn from (30, 100) to (100, 100) with a control point at (80, 30) and then smoothly continued to (200, 80). The left half of [[SVG Essentials/Paths#svgess-CHP-6-FIG-9|Figure 6-9]] shows the curve; the right half shows the control points. The reflected control point is shown with a dashed line. Gracefulness has returned!&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 100 Q 80 30, 100 100 T 200 80&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-9&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-9. Smooth quadratic polybézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt120.png|Smooth quadratic polybézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cubic Bézier Curves ===&lt;br /&gt;
&lt;br /&gt;
A single quadratic Bézier curve has exactly one inflection point (the point where the curve changes direction). While these curves are more versatile than simple arcs, we can do even better by using cubic Bézier curves, which can have one or two inflection points.&lt;br /&gt;
&lt;br /&gt;
The difference between the quadratic and cubic curves is that the cubic curve has two control points, one for each endpoint. The technique for generating the cubic curve is similar to that for generating the quadratic curve. You draw three lines that connect the endpoints and control points (a), and connect their midpoints. That produces two lines (b). You connect ''their'' midpoints, and that produces one line (c), whose midpoint determines one of the points on the final curve.&amp;lt;ref&amp;gt;We're dispensing with the tent analogy; it gets too unwieldy. Curves based on yurts and geodesic domes are left as exercises for the reader.&amp;lt;/ref&amp;gt; See [[SVG Essentials/Paths#svgess-CHP-6-FIG-10|Figure 6-10]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-10&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-10. Visualizing a cubic Bézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt121.png|Visualizing a cubic Bézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To specify such a cubic curve, use the &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;c&amp;lt;/tt&amp;gt; command. The command is followed by three sets of coordinates that specify the control point for the start point, the control point for the end point, and the end point. As with all the other path commands, an uppercase command implies absolute coordinates; lowercase implies relative coordinates. The curve in the preceding diagram was drawn from (20, 80) to (200, 120) with control points at (50, 20) and (150, 60). The SVG for the path was as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M20 80 C 50 20, 150 60, 200 120&amp;quot;&lt;br /&gt;
     style=&amp;quot;stroke: black; fill: none;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many interesting curves you can draw, depending upon the relationship of the control points (see [[SVG Essentials/Paths#svgess-CHP-6-FIG-11|Figure 6-11]]). To make the graphic cleaner, we show only the lines from each endpoint to its control point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-11&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-11. Result of cubic Bézier control point combinations'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt123.png|Result of cubic Bézier control point combinations]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with quadratic curves, you can construct a cubic polybézier by specifying several sets of coordinates after a cubic curve command. The last point of the first curve becomes the first point of the next curve, and so on. Here is a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; that draws a cubic curve from (30, 100) to (100, 100) with control points at (50, 50) and (70, 20); it is immediately followed by a curve that doubles back to (65, 100) with control points at (110, 130) and (45, 150). Here is the SVG for this path, with control point coordinates in bold. The result is shown in the left half of [[SVG Essentials/Paths#svgess-CHP-6-FIG-12|Figure 6-12]]; the control points and lines are shown in the right half of the diagram.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 100 C '''50 50, 70 20''', 100 100, '''110, 130, 45, 150''', 65, 100&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-12&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-12. Cubic polybézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt125.png|Cubic polybézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to guarantee a smooth join between curves, you can use the &amp;lt;tt&amp;gt;S&amp;lt;/tt&amp;gt; command (or &amp;lt;tt&amp;gt;s&amp;lt;/tt&amp;gt; if you want to use relative coordinates). In a manner analogous to that of the &amp;lt;tt&amp;gt;T&amp;lt;/tt&amp;gt; command for quadratic curves, the new curve will take the previous curve's endpoint as its starting point, and the first control point will be the reflection of the previous ending control point. All you need to supply will be the control point for the next endpoint on the curve, followed by the next endpoint itself.&lt;br /&gt;
&lt;br /&gt;
Here is a cubic Bézier curve drawn from (30, 100) to (100, 100) with control points at (50, 30) and (70, 50). It continues smoothly to (200, 80), using (150, 40) as its ending control point. The upper half shows the curve; the lower half shows the control points. The reflected control point is shown with a dashed line in [[SVG Essentials/Paths#svgess-CHP-6-FIG-13|Figure 6-13]].&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M30 100 C 50 30, 70 50, 100 100 S 150 40, 200 80&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-13&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-13. Smooth cubic polybézier curve'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt127.png|Smooth cubic polybézier curve]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Path Reference Summary ==&lt;br /&gt;
&lt;br /&gt;
In [[SVG Essentials/Paths#svgess-CHP-6-TABLE-1|Table 6-1]], uppercase commands use absolute coordinates and lowercase commands use relative coordinates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-TABLE-1&amp;quot;&amp;gt;&lt;br /&gt;
'''Table 6-1. Path commands'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Command !! Arguments !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 M&lt;br /&gt;
 m&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x y''&amp;lt;/tt&amp;gt; || Move to given coordinates.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 L&lt;br /&gt;
 l&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x y''&amp;lt;/tt&amp;gt; || Draw a line to the given coordinates. You may supply multiple sets of coordinates to draw a polyline.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 H&lt;br /&gt;
 h&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt; || Draw a horizontal line to the given ''x''-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 V&lt;br /&gt;
 v&lt;br /&gt;
| &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt; || Draw a vertical line to the given ''x''-coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 A&lt;br /&gt;
 a&lt;br /&gt;
| &amp;lt;tt&amp;gt;''rx ry x-axis-rotation large-arc sweep x y''&amp;lt;/tt&amp;gt; || Draw an elliptical arc from the current point to (&amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt;). The points are on an ellipse with ''x''-radius &amp;lt;tt&amp;gt;''rx''&amp;lt;/tt&amp;gt; and ''y''-radius &amp;lt;tt&amp;gt;''ry''&amp;lt;/tt&amp;gt;. The ellipse is rotated &amp;lt;tt&amp;gt;''x-axis-rotation''&amp;lt;/tt&amp;gt; degrees. If the arc is less than 180 degrees, &amp;lt;tt&amp;gt;''large-arc''&amp;lt;/tt&amp;gt; is zero; if greater than 180 degrees, &amp;lt;tt&amp;gt;''large-arc''&amp;lt;/tt&amp;gt; is one. If the arc is to be drawn in the positive direction, &amp;lt;tt&amp;gt;''sweep''&amp;lt;/tt&amp;gt; is one; otherwise it is zero.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 Q&lt;br /&gt;
 q&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x1 y1 x y''&amp;lt;/tt&amp;gt; || Draw a quadratic Bézier curve from the current point to (&amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt;) using control point (&amp;lt;tt&amp;gt;''x1''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y1''&amp;lt;/tt&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 T&lt;br /&gt;
 t&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x y''&amp;lt;/tt&amp;gt; || Draw a quadratic Bézier curve from the current point to (&amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt;). The control point will be the reflection of the previous &amp;lt;tt&amp;gt;Q&amp;lt;/tt&amp;gt; command's control point. If there is no previous curve, the current point will be used as the control point.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 C&lt;br /&gt;
 c&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x1 y1 x2 y2 x y''&amp;lt;/tt&amp;gt; || Draw a cubic Bézier curve from the current point to (&amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt;) using control point (&amp;lt;tt&amp;gt;''x1''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y1''&amp;lt;/tt&amp;gt;) as the control point for the beginning of the curve and (&amp;lt;tt&amp;gt;''x2''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y2''&amp;lt;/tt&amp;gt;) as the control point for the endpoint of the curve.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
 S&lt;br /&gt;
 s&lt;br /&gt;
| &amp;lt;tt&amp;gt;''x2 y2 x y''&amp;lt;/tt&amp;gt; || Draw a cubic Bézier curve from the current point to (&amp;lt;tt&amp;gt;''x''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y''&amp;lt;/tt&amp;gt;), using (&amp;lt;tt&amp;gt;''x2''&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;''y2''&amp;lt;/tt&amp;gt;) as the control point for this new endpoint. The first control point will be the reflection of the previous &amp;lt;tt&amp;gt;C&amp;lt;/tt&amp;gt; command's ending control point. If there is no previous curve, the current point will be used as the first control point.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Paths and Filling ==&lt;br /&gt;
&lt;br /&gt;
The information described in [[SVG Essentials/Basic Shapes|Chapter 3]] in [[SVG Essentials/Basic Shapes#Filling Polygons That Have Intersecting Lines|Section 3.5.1]] is also applicable to paths, which can not only have intersecting lines, but can also have &amp;quot;holes&amp;quot; in them. Consider the paths in [[SVG Essentials/Paths#svgess-CHP-6-EX-4|Example 6-4]], both of which draw nested squares. In the first path, both squares are drawn clockwise; in the second path, the outer square is drawn clockwise and the inner square is drawn counterclockwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-4&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-4. Using different fill-rule values on paths'''&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;!-- both paths clockwise --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 0 0, 60 0, 60 60, 0 60 Z&lt;br /&gt;
     M 15 15, 45 15, 45 45, 15 45Z&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;!-- outer path clockwise; inner path counterclockwise --&amp;gt;&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 0 0, 60 0, 60 60, 0 60 Z&lt;br /&gt;
     M 15 15, 15 45, 45 45, 45 15Z&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SVG Essentials/Paths#svgess-CHP-6-FIG-14|Figure 6-14]] shows that there is a difference when you use a &amp;lt;tt&amp;gt;fill-rule&amp;lt;/tt&amp;gt; of &amp;lt;tt&amp;gt;nonzero&amp;lt;/tt&amp;gt;, which takes into account the direction of the lines when determining whether a point is inside or outside a path. Using a &amp;lt;tt&amp;gt;fill-rule&amp;lt;/tt&amp;gt; of &amp;lt;tt&amp;gt;evenodd&amp;lt;/tt&amp;gt; produces the same result for both paths; it uses total number of lines crossed and ignores their direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-14&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-14. Result of using different fill-rule values'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt137.png|Result of using different &lt;br /&gt;
   fill-rule values]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The marker element ==&lt;br /&gt;
&lt;br /&gt;
Let us presume the following path, which uses a line, an elliptical arc, and another line to draw the rounded corner in [[SVG Essentials/Paths#svgess-CHP-6-FIG-15|Figure 6-15]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 20 100 20 A 20 30 0 0 1 120 50 L 120 110&amp;quot;&lt;br /&gt;
     style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-15&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-15. Lines and arc'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt139.png|Lines and arc]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We'd like to mark the direction of the path by putting a circle at the beginning, a solid triangle at the end, and arrowheads at the other vertices, as shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-16|Figure 6-16]]. To achieve this effect, we will construct three &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; elements and tell the &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt; to reference them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-16&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-16. Lines and arc with markers'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt140.png|Lines and arc with markers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's start with [[SVG Essentials/Paths#svgess-CHP-6-EX-5|Example 6-5]], which adds the circular marker. A marker is a &amp;quot;self-contained&amp;quot; graphic with its own private set of coordinates, so you have to specify its &amp;lt;tt&amp;gt;markerWidth&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;markerHeight&amp;lt;/tt&amp;gt; height in the starting &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; tag. That is followed by the SVG elements required to draw the marker, and ends with a closing &amp;lt;tt&amp;gt;&amp;lt;/marker&amp;gt;&amp;lt;/tt&amp;gt;. A &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; element does not display by itself, but we are putting it in a &amp;lt;tt&amp;gt;&amp;lt;defs&amp;gt;&amp;lt;/tt&amp;gt; element because that's where reusable elements belong.&lt;br /&gt;
&lt;br /&gt;
Since we want the circle to be at the beginning of the path, we add a &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; in the &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt;.&amp;lt;ref&amp;gt;Yes, markers are considered to be part of presentation rather than structure. This is one of those gray areas where you could argue either case.&amp;lt;/ref&amp;gt; The value of this property is a URL reference to the &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; element we've just created.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-5&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-5. First attempt at circular marker'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;defs&amp;gt;&lt;br /&gt;
 &amp;lt;marker id=&amp;quot;mCircle&amp;quot; markerWidth=&amp;quot;10&amp;quot; markerHeight=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;circle cx=&amp;quot;5&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &amp;lt;/defs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;path  d=&amp;quot;M 10 20 100 20 A 20 30 0 0 1 120 50 L 120 110&amp;quot;&lt;br /&gt;
     style=&amp;quot;'''marker-start: url(#mCircle);'''&lt;br /&gt;
     fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result in [[SVG Essentials/Paths#svgess-CHP-6-FIG-17|Figure 6-17]] is not quite what we planned...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-17&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-17. Misplaced circular marker'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt141.png|Misplaced circular marker]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reason the circle appears in the wrong place is that, by default, the start marker's (0, 0) point is aligned with the beginning coordinate of the path. [[SVG Essentials/Paths#svgess-CHP-6-EX-6|Example 6-6]] adds &amp;lt;tt&amp;gt;refX&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;refY&amp;lt;/tt&amp;gt; attributes that tell which coordinates (in the marker's system) are to align with the beginning coordinate. Once these are added, the circular marker appears exactly where it is desired in [[SVG Essentials/Paths#svgess-CHP-6-FIG-18|Figure 6-18]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-6&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-6. Correctly placed circular marker'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;marker id=&amp;quot;mCircle&amp;quot; markerWidth=&amp;quot;10&amp;quot; markerHeight=&amp;quot;10&amp;quot; '''refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot;'''&amp;gt;&lt;br /&gt;
     &amp;lt;circle cx=&amp;quot;5&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/marker&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-18&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-18. Correctly placed circular marker'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt142.png|Correctly placed circular marker]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this information, we can now write [[SVG Essentials/Paths#svgess-CHP-6-EX-7|Example 6-7]], which adds the triangular marker and references it as the &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; for the path. Then we can add the arrowhead marker and reference it as the &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; will be attached to every vertex except the beginning and end of the path. Notice that the &amp;lt;tt&amp;gt;refX&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;refY&amp;lt;/tt&amp;gt; attributes have been set so the wide end of the arrowhead aligns with the intermediate vertices while the tip of the solid triangle aligns with the ending vertex. [[SVG Essentials/Paths#svgess-CHP-6-FIG-19|Figure 6-19]] shows the result, which draws the first marker correctly but not the others.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-7&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-7. Attempt to use three markers'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;defs&amp;gt;&lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mCircle&amp;quot; markerWidth=&amp;quot;10&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         '''refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot;'''&amp;gt;&lt;br /&gt;
         &amp;lt;circle cx=&amp;quot;5&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mArrow&amp;quot; markerWidth=&amp;quot;6&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         '''refX=&amp;quot;0&amp;quot; refY=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
         &amp;lt;path d=&amp;quot;M 0 0 4 4 0 8&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mTriangle&amp;quot; markerWidth=&amp;quot;5&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         '''refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot;'''&amp;gt;&lt;br /&gt;
         &amp;lt;path d=&amp;quot;M 0 0 5 5 0 10 Z&amp;quot; style=&amp;quot;fill: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &amp;lt;/defs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 20 100 20 A 20 30 0 0 1 120 50 L 120 110&amp;quot;&lt;br /&gt;
     style=&amp;quot;marker-start: url(#mCircle);&lt;br /&gt;
         marker-mid: url(#mArrow);&lt;br /&gt;
         marker-end: url(#mTriangle);&lt;br /&gt;
         fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-19&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-19. Incorrectly oriented markers'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt143.png|Incorrectly oriented markers]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the effect you want, you must explicitly set a marker's &amp;lt;tt&amp;gt;orient&amp;lt;/tt&amp;gt; attribute to &amp;lt;tt&amp;gt;auto&amp;lt;/tt&amp;gt;. This makes it automatically rotate to match the direction of the path.&amp;lt;ref&amp;gt;To be exact, the rotation is the average of the angle of the direction of the line going into the vertex and the direction of the line going out of the vertex.&amp;lt;/ref&amp;gt; (You may also specify a number of degrees, in which case the marker will always be rotated by that amount.) Here in [[SVG Essentials/Paths#svgess-CHP-6-EX-8|Example 6-8]] are the markers, set to produce the effect shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-16|Figure 6-16]]. We don't need to orient the circle; it looks the same no matter how it's rotated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-8&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-8. Correctly oriented markers'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;defs&amp;gt;&lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mCircle&amp;quot; markerWidth=&amp;quot;10&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;circle cx=&amp;quot;5&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mArrow&amp;quot; markerWidth=&amp;quot;6&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         refX=&amp;quot;0&amp;quot; refY=&amp;quot;4&amp;quot; '''orient=&amp;quot;auto&amp;quot;'''&amp;gt;&lt;br /&gt;
         &amp;lt;path d=&amp;quot;M 0 0 4 4 0 8&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mTriangle&amp;quot; markerWidth=&amp;quot;5&amp;quot; markerHeight=&amp;quot;10&amp;quot;&lt;br /&gt;
         refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot; '''orient=&amp;quot;auto&amp;quot;'''&amp;gt;&lt;br /&gt;
         &amp;lt;path d=&amp;quot;M 0 0 5 5 0 10 Z&amp;quot; style=&amp;quot;fill: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &amp;lt;/defs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 20 100 20 A 20 30 0 0 1 120 50 L 120 110&amp;quot;&lt;br /&gt;
     style=&amp;quot;marker-start: url(#mCircle);&lt;br /&gt;
         marker-mid: url(#mArrow);&lt;br /&gt;
         marker-end: url(#mTriangle);&lt;br /&gt;
         fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another useful attribute is the &amp;lt;tt&amp;gt;markerUnits&amp;lt;/tt&amp;gt; attribute. If set to &amp;lt;tt&amp;gt;strokeWidth&amp;lt;/tt&amp;gt;, the marker's coordinate system is set so that one unit equals the stroke width. This makes your marker grow in proportion to the stroke width; it's the default behavior and it's usually what you want. If you set the attribute to &amp;lt;tt&amp;gt;userSpaceOnUse&amp;lt;/tt&amp;gt;, the marker's coordinates are presumed to be the same as the coordinate system of the object that references the marker. The marker will remain the same size irrespective of the stroke width.&lt;br /&gt;
&lt;br /&gt;
== Marker Miscellanea ==&lt;br /&gt;
&lt;br /&gt;
If you want the same marker at the beginning, middle, and end of a path, you don't need to specify all of the &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties. Just use the &amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt; property and have it reference the marker you want. Thus, if we wanted all the vertices to have a circular marker, as shown in [[SVG Essentials/Paths#svgess-CHP-6-FIG-20|Figure 6-20]], we'd write the SVG in [[SVG Essentials/Paths#svgess-CHP-6-EX-9|Example 6-9]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-EX-9&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 6-9. Using a single marker for all vertices'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;defs&amp;gt;&lt;br /&gt;
     &amp;lt;marker id=&amp;quot;mCircle&amp;quot; markerWidth=&amp;quot;10&amp;quot; markerHeight=&amp;quot;10&amp;quot; &lt;br /&gt;
         refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;circle cx=&amp;quot;5&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; style=&amp;quot;fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;/marker&amp;gt;&lt;br /&gt;
 &amp;lt;/defs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;path d=&amp;quot;M 10 20 100 20 A 20 30 0 0 1 120 50 L 120 110&amp;quot;&lt;br /&gt;
     style=&amp;quot;marker: url(#mCircle); fill: none; stroke: black;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;svgess-CHP-6-FIG-20&amp;quot;&amp;gt;&lt;br /&gt;
'''Figure 6-20. Using a single marker for all vertices'''&lt;br /&gt;
&lt;br /&gt;
[[Image:SVG Essentials/I_6_tt144.png|Using a single marker for all vertices]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is also possible to set the &amp;lt;tt&amp;gt;viewBox&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;preserveAspectRatio&amp;lt;/tt&amp;gt; attributes on a &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; element to gain even more control over its display. These work exactly as described in [[SVG Essentials/Coordinates|Chapter 2]], in [[SVG Essentials/Coordinates#Specifying User Coordinates for a Viewport|Section 2.3]] and in [[SVG Essentials/Coordinates#Preserving Aspect Ratio|Section 2.4]].&lt;br /&gt;
&lt;br /&gt;
You may reference a &amp;lt;tt&amp;gt;&amp;lt;marker&amp;gt;&amp;lt;/tt&amp;gt; in a &amp;lt;tt&amp;gt;&amp;lt;polygon&amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;lt;polyline&amp;gt;&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;&amp;lt;line&amp;gt;&amp;lt;/tt&amp;gt; element as well as in a &amp;lt;tt&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following thought may have occurred to you: &amp;quot;If a marker can have a path in it, can ''that'' path have a marker attached to it as well?&amp;quot; The answer is yes, it can, but the second marker must fit into the rectangle established by the first marker's &amp;lt;tt&amp;gt;markerWidth&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;markerHeight&amp;lt;/tt&amp;gt;. Please remember that just because a thing can be done does not mean that it should be done. If you need such an effect, you are probably better off to draw the secondary marker as a part of the primary marker rather than attempting to nest markers.&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Docbook2Wiki</name></author>	</entry>

	</feed>