fonttools/Documentation/fontToolsDocs/fontTools.misc.bezierTools.html
Erik van Blokland 3646055ea2 initial import
git-svn-id: http://svn.robofab.com/trunk@1 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c
2008-01-07 17:40:34 +00:00

148 lines
18 KiB
HTML

<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.bezierTools</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.bezierTools</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/bezierTools.py">/code/fontTools/Lib/fontTools/misc/bezierTools.py</a></font></td></tr></table>
<p><tt>fontTools.misc.bezierTools.py&nbsp;--&nbsp;tools&nbsp;for&nbsp;working&nbsp;with&nbsp;bezier&nbsp;path&nbsp;segments.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="Numeric.html">Numeric</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-acos"><strong>acos</strong></a>(...)</dt><dd><tt><a href="#-acos">acos</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;arc&nbsp;cosine&nbsp;(measured&nbsp;in&nbsp;radians)&nbsp;of&nbsp;x.</tt></dd></dl>
<dl><dt><a name="-calcCubicBounds"><strong>calcCubicBounds</strong></a>(pt1, pt2, pt3, pt4)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;rectangle&nbsp;for&nbsp;a&nbsp;cubic&nbsp;bezier&nbsp;segment.<br>
pt1&nbsp;and&nbsp;pt4&nbsp;are&nbsp;the&nbsp;"anchor"&nbsp;points,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;are&nbsp;the&nbsp;"handles".<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;75.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((0,&nbsp;0),&nbsp;(50,&nbsp;0),&nbsp;(100,&nbsp;50),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;100.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcCubicBounds">calcCubicBounds</a>((50,&nbsp;0),&nbsp;(0,&nbsp;100),&nbsp;(100,&nbsp;100),&nbsp;(50,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(35.566243270259356,&nbsp;0.0,&nbsp;64.433756729740679,&nbsp;75.0)</tt></dd></dl>
<dl><dt><a name="-calcCubicParameters"><strong>calcCubicParameters</strong></a>(pt1, pt2, pt3, pt4)</dt></dl>
<dl><dt><a name="-calcCubicPoints"><strong>calcCubicPoints</strong></a>(a, b, c, d)</dt></dl>
<dl><dt><a name="-calcQuadraticBounds"><strong>calcQuadraticBounds</strong></a>(pt1, pt2, pt3)</dt><dd><tt>Return&nbsp;the&nbsp;bounding&nbsp;rectangle&nbsp;for&nbsp;a&nbsp;qudratic&nbsp;bezier&nbsp;segment.<br>
pt1&nbsp;and&nbsp;pt3&nbsp;are&nbsp;the&nbsp;"anchor"&nbsp;points,&nbsp;pt2&nbsp;is&nbsp;the&nbsp;"handle".<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcQuadraticBounds">calcQuadraticBounds</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;50.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-calcQuadraticBounds">calcQuadraticBounds</a>((0,&nbsp;0),&nbsp;(100,&nbsp;0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0.0,&nbsp;0.0,&nbsp;100.0,&nbsp;100.0)</tt></dd></dl>
<dl><dt><a name="-calcQuadraticParameters"><strong>calcQuadraticParameters</strong></a>(pt1, pt2, pt3)</dt></dl>
<dl><dt><a name="-calcQuadraticPoints"><strong>calcQuadraticPoints</strong></a>(a, b, c)</dt></dl>
<dl><dt><a name="-cos"><strong>cos</strong></a>(...)</dt><dd><tt><a href="#-cos">cos</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;cosine&nbsp;of&nbsp;x&nbsp;(measured&nbsp;in&nbsp;radians).</tt></dd></dl>
<dl><dt><a name="-printSegments"><strong>printSegments</strong></a>(segments)</dt><dd><tt>Helper&nbsp;for&nbsp;the&nbsp;doctests,&nbsp;displaying&nbsp;each&nbsp;segment&nbsp;in&nbsp;a&nbsp;list&nbsp;of<br>
segments&nbsp;on&nbsp;a&nbsp;single&nbsp;line&nbsp;as&nbsp;a&nbsp;tuple.</tt></dd></dl>
<dl><dt><a name="-solveCubic"><strong>solveCubic</strong></a>(a, b, c, d, abs<font color="#909090">=&lt;built-in function abs&gt;</font>, pow<font color="#909090">=&lt;built-in function pow&gt;</font>, sqrt<font color="#909090">=&lt;built-in function sqrt&gt;</font>, cos<font color="#909090">=&lt;built-in function cos&gt;</font>, acos<font color="#909090">=&lt;built-in function acos&gt;</font>, pi<font color="#909090">=3.1415926535897931</font>)</dt><dd><tt>Solve&nbsp;a&nbsp;cubic&nbsp;equation&nbsp;where&nbsp;a,&nbsp;b,&nbsp;c&nbsp;and&nbsp;d&nbsp;are&nbsp;real.<br>
&nbsp;&nbsp;&nbsp;&nbsp;a*x*x*x&nbsp;+&nbsp;b*x*x&nbsp;+&nbsp;c*x&nbsp;+&nbsp;d&nbsp;=&nbsp;0<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;roots.&nbsp;Note&nbsp;that&nbsp;the&nbsp;returned&nbsp;list<br>
is&nbsp;neither&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;sorted&nbsp;nor&nbsp;to&nbsp;contain&nbsp;unique&nbsp;values!</tt></dd></dl>
<dl><dt><a name="-solveQuadratic"><strong>solveQuadratic</strong></a>(a, b, c, sqrt<font color="#909090">=&lt;built-in function sqrt&gt;</font>)</dt><dd><tt>Solve&nbsp;a&nbsp;quadratic&nbsp;equation&nbsp;where&nbsp;a,&nbsp;b&nbsp;and&nbsp;c&nbsp;are&nbsp;real.<br>
&nbsp;&nbsp;&nbsp;&nbsp;a*x*x&nbsp;+&nbsp;b*x&nbsp;+&nbsp;c&nbsp;=&nbsp;0<br>
This&nbsp;function&nbsp;returns&nbsp;a&nbsp;list&nbsp;of&nbsp;roots.&nbsp;Note&nbsp;that&nbsp;the&nbsp;returned&nbsp;list<br>
is&nbsp;neither&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;sorted&nbsp;nor&nbsp;to&nbsp;contain&nbsp;unique&nbsp;values!</tt></dd></dl>
<dl><dt><a name="-splitCubic"><strong>splitCubic</strong></a>(pt1, pt2, pt3, pt4, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;cubic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2,&nbsp;pt3&nbsp;and&nbsp;pt4&nbsp;at&nbsp;position&nbsp;'where',<br>
which&nbsp;is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;150,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(68.75,&nbsp;75.0),&nbsp;(87.5,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubic">splitCubic</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(2.2937927384,&nbsp;9.17517095361),&nbsp;(4.79804488188,&nbsp;17.5085042869),&nbsp;(7.47413641001,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((7.47413641001,&nbsp;25.0),&nbsp;(31.2886200204,&nbsp;91.6666666667),&nbsp;(68.7113799796,&nbsp;91.6666666667),&nbsp;(92.52586359,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((92.52586359,&nbsp;25.0),&nbsp;(95.2019551181,&nbsp;17.5085042869),&nbsp;(97.7062072616,&nbsp;9.17517095361),&nbsp;(100.0,&nbsp;1.7763568394e-15))</tt></dd></dl>
<dl><dt><a name="-splitCubicAtT"><strong>splitCubicAtT</strong></a>(pt1, pt2, pt3, pt4, *ts)</dt><dd><tt>Split&nbsp;the&nbsp;cubic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2,&nbsp;pt3&nbsp;and&nbsp;pt4&nbsp;at&nbsp;one&nbsp;or&nbsp;more<br>
values&nbsp;of&nbsp;t.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubicAtT">splitCubicAtT</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(68.75,&nbsp;75.0),&nbsp;(87.5,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitCubicAtT">splitCubicAtT</a>((0,&nbsp;0),&nbsp;(25,&nbsp;100),&nbsp;(75,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5,&nbsp;0.75))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;50.0),&nbsp;(31.25,&nbsp;75.0),&nbsp;(50.0,&nbsp;75.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;75.0),&nbsp;(59.375,&nbsp;75.0),&nbsp;(68.75,&nbsp;68.75),&nbsp;(77.34375,&nbsp;56.25))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((77.34375,&nbsp;56.25),&nbsp;(85.9375,&nbsp;43.75),&nbsp;(93.75,&nbsp;25.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-splitLine"><strong>splitLine</strong></a>(pt1, pt2, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;line&nbsp;between&nbsp;pt1&nbsp;and&nbsp;pt2&nbsp;at&nbsp;position&nbsp;'where',&nbsp;which<br>
is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;two&nbsp;line&nbsp;segments&nbsp;if&nbsp;the<br>
line&nbsp;was&nbsp;successfully&nbsp;split,&nbsp;or&nbsp;a&nbsp;list&nbsp;containing&nbsp;the&nbsp;original<br>
line.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;50,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;100,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;0,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(0.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitLine">splitLine</a>((0,&nbsp;0),&nbsp;(100,&nbsp;100),&nbsp;0,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(0.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(100,&nbsp;100))</tt></dd></dl>
<dl><dt><a name="-splitQuadratic"><strong>splitQuadratic</strong></a>(pt1, pt2, pt3, where, isHorizontal)</dt><dd><tt>Split&nbsp;the&nbsp;quadratic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;at&nbsp;position&nbsp;'where',<br>
which&nbsp;is&nbsp;an&nbsp;x&nbsp;coordinate&nbsp;if&nbsp;isHorizontal&nbsp;is&nbsp;False,&nbsp;a&nbsp;y&nbsp;coordinate&nbsp;if<br>
isHorizontal&nbsp;is&nbsp;True.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;150,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;False))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(12.5,&nbsp;25.0),&nbsp;(25.0,&nbsp;37.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((25.0,&nbsp;37.5),&nbsp;(62.5,&nbsp;75.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;25,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(7.32233047034,&nbsp;14.6446609407),&nbsp;(14.6446609407,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((14.6446609407,&nbsp;25.0),&nbsp;(50.0,&nbsp;75.0),&nbsp;(85.3553390593,&nbsp;25.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((85.3553390593,&nbsp;25.0),&nbsp;(92.6776695297,&nbsp;14.6446609407),&nbsp;(100.0,&nbsp;-7.1054273576e-15))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;#&nbsp;XXX&nbsp;I'm&nbsp;not&nbsp;at&nbsp;all&nbsp;sure&nbsp;if&nbsp;the&nbsp;following&nbsp;behavior&nbsp;is&nbsp;desirable:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadratic">splitQuadratic</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;50,&nbsp;True))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-splitQuadraticAtT"><strong>splitQuadraticAtT</strong></a>(pt1, pt2, pt3, *ts)</dt><dd><tt>Split&nbsp;the&nbsp;quadratic&nbsp;curve&nbsp;between&nbsp;pt1,&nbsp;pt2&nbsp;and&nbsp;pt3&nbsp;at&nbsp;one&nbsp;or&nbsp;more<br>
values&nbsp;of&nbsp;t.&nbsp;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;curve&nbsp;segments.<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadraticAtT">splitQuadraticAtT</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(75.0,&nbsp;50.0),&nbsp;(100.0,&nbsp;0.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-printSegments">printSegments</a>(<a href="#-splitQuadraticAtT">splitQuadraticAtT</a>((0,&nbsp;0),&nbsp;(50,&nbsp;100),&nbsp;(100,&nbsp;0),&nbsp;0.5,&nbsp;0.75))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((0.0,&nbsp;0.0),&nbsp;(25.0,&nbsp;50.0),&nbsp;(50.0,&nbsp;50.0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((50.0,&nbsp;50.0),&nbsp;(62.5,&nbsp;50.0),&nbsp;(75.0,&nbsp;37.5))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((75.0,&nbsp;37.5),&nbsp;(87.5,&nbsp;25.0),&nbsp;(100.0,&nbsp;0.0))</tt></dd></dl>
<dl><dt><a name="-sqrt"><strong>sqrt</strong></a>(...)</dt><dd><tt><a href="#-sqrt">sqrt</a>(x)<br>
&nbsp;<br>
Return&nbsp;the&nbsp;square&nbsp;root&nbsp;of&nbsp;x.</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>__all__</strong> = ['calcQuadraticBounds', 'calcCubicBounds', 'splitLine', 'splitQuadratic', 'splitCubic', 'splitQuadraticAtT', 'splitCubicAtT', 'solveQuadratic', 'solveCubic']<br>
<strong>epsilon</strong> = 9.9999999999999998e-13<br>
<strong>pi</strong> = 3.1415926535897931</td></tr></table>
</body></html>