geosolver/doc/pydoc/geosolver.geometric.html

412 lines
31 KiB
HTML

<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module geosolver.geometric</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="geosolver.html"><font color="#ffffff">geosolver</font></a>.geometric</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/rick/Programming/Python/GeoSolver/geosolver/geometric.py">/home/rick/Programming/Python/GeoSolver/geosolver/geometric.py</a></font></td></tr></table>
<p><tt>Geometric&nbsp;constraint&nbsp;problem&nbsp;and&nbsp;solver.&nbsp;Uses&nbsp;ClusterSolver&nbsp;for&nbsp;solving<br>
problems&nbsp;incrementally.</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="math.html">math</a><br>
</td><td width="25%" valign=top><a href="geosolver.vector.html">geosolver.vector</a><br>
</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="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>(<a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>, <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#AngleConstraint">AngleConstraint</a>
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#DistanceConstraint">DistanceConstraint</a>
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#FixConstraint">FixConstraint</a>
</font></dt></dl>
</dd>
</dl>
</dd>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#GeometricCluster">GeometricCluster</a>
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#GeometricProblem">GeometricProblem</a>(<a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>, <a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>)
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#GeometricSolver">GeometricSolver</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#GeometricProblem">GeometricProblem</a>(<a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>, <a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>)
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>(<a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>, <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="geosolver.geometric.html#AngleConstraint">AngleConstraint</a>
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#DistanceConstraint">DistanceConstraint</a>
</font></dt><dt><font face="helvetica, arial"><a href="geosolver.geometric.html#FixConstraint">FixConstraint</a>
</font></dt></dl>
</dd>
</dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="AngleConstraint">class <strong>AngleConstraint</strong></a>(<a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;constraint&nbsp;on&nbsp;the&nbsp;angle&nbsp;in&nbsp;point&nbsp;B&nbsp;of&nbsp;a&nbsp;triangle&nbsp;ABC<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="geosolver.geometric.html#AngleConstraint">AngleConstraint</a></dd>
<dd><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a></dd>
<dd><a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a></dd>
<dd><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="AngleConstraint-__init__"><strong>__init__</strong></a>(self, a, b, c, ang)</dt><dd><tt>Create&nbsp;a&nbsp;new&nbsp;<a href="#AngleConstraint">AngleConstraint</a>&nbsp;instance.&nbsp;<br>
&nbsp;<br>
keyword&nbsp;args:<br>
&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name<br>
&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name<br>
&nbsp;c&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name<br>
&nbsp;ang&nbsp;&nbsp;-&nbsp;the&nbsp;angle&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="AngleConstraint-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="AngleConstraint-satisfied"><strong>satisfied</strong></a>(self, mapping)</dt><dd><tt>return&nbsp;True&nbsp;iff&nbsp;mapping&nbsp;from&nbsp;variable&nbsp;names&nbsp;to&nbsp;points&nbsp;satisfies&nbsp;constraint</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>:<br>
<dl><dt><a name="AngleConstraint-get_parameter"><strong>get_parameter</strong></a>(self)</dt><dd><tt>get&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="AngleConstraint-set_parameter"><strong>set_parameter</strong></a>(self, value)</dt><dd><tt>set&nbsp;parameter&nbsp;value&nbsp;and&nbsp;notify&nbsp;any&nbsp;listeners</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>:<br>
<dl><dt><a name="AngleConstraint-variables"><strong>variables</strong></a>(self)</dt><dd><tt>return&nbsp;a&nbsp;list&nbsp;of&nbsp;variables<br>
&nbsp;<br>
If&nbsp;an&nbsp;attribute&nbsp;'_variables'&nbsp;has&nbsp;been&nbsp;defined,&nbsp;a&nbsp;new&nbsp;list<br>
with&nbsp;the&nbsp;contents&nbsp;of&nbsp;that&nbsp;attribute&nbsp;will&nbsp;be&nbsp;returned.&nbsp;<br>
Subclasses&nbsp;may&nbsp;choose&nbsp;to&nbsp;initialise&nbsp;this&nbsp;variable&nbsp;or&nbsp;to&nbsp;<br>
override&nbsp;this&nbsp;function.</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>:<br>
<dl><dt><a name="AngleConstraint-add_listener"><strong>add_listener</strong></a>(self, listener)</dt><dd><tt>add&nbsp;a&nbsp;listener&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="AngleConstraint-rem_listener"><strong>rem_listener</strong></a>(self, listener)</dt><dd><tt>remove&nbsp;a&nbsp;listener&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="AngleConstraint-send_notify"><strong>send_notify</strong></a>(self, message)</dt><dd><tt>send&nbsp;a&nbsp;message&nbsp;to&nbsp;all&nbsp;listeners</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="DistanceConstraint">class <strong>DistanceConstraint</strong></a>(<a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;constraint&nbsp;on&nbsp;the&nbsp;Euclidean&nbsp;distance&nbsp;between&nbsp;two&nbsp;points<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="geosolver.geometric.html#DistanceConstraint">DistanceConstraint</a></dd>
<dd><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a></dd>
<dd><a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a></dd>
<dd><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="DistanceConstraint-__init__"><strong>__init__</strong></a>(self, a, b, dist)</dt><dd><tt>Create&nbsp;a&nbsp;new&nbsp;<a href="#DistanceConstraint">DistanceConstraint</a>&nbsp;instance<br>
&nbsp;<br>
keyword&nbsp;args:<br>
&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name&nbsp;<br>
&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name<br>
&nbsp;dist&nbsp;-&nbsp;the&nbsp;distance&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="DistanceConstraint-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="DistanceConstraint-satisfied"><strong>satisfied</strong></a>(self, mapping)</dt><dd><tt>return&nbsp;True&nbsp;iff&nbsp;mapping&nbsp;from&nbsp;variable&nbsp;names&nbsp;to&nbsp;points&nbsp;satisfies&nbsp;constraint</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>:<br>
<dl><dt><a name="DistanceConstraint-get_parameter"><strong>get_parameter</strong></a>(self)</dt><dd><tt>get&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="DistanceConstraint-set_parameter"><strong>set_parameter</strong></a>(self, value)</dt><dd><tt>set&nbsp;parameter&nbsp;value&nbsp;and&nbsp;notify&nbsp;any&nbsp;listeners</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>:<br>
<dl><dt><a name="DistanceConstraint-variables"><strong>variables</strong></a>(self)</dt><dd><tt>return&nbsp;a&nbsp;list&nbsp;of&nbsp;variables<br>
&nbsp;<br>
If&nbsp;an&nbsp;attribute&nbsp;'_variables'&nbsp;has&nbsp;been&nbsp;defined,&nbsp;a&nbsp;new&nbsp;list<br>
with&nbsp;the&nbsp;contents&nbsp;of&nbsp;that&nbsp;attribute&nbsp;will&nbsp;be&nbsp;returned.&nbsp;<br>
Subclasses&nbsp;may&nbsp;choose&nbsp;to&nbsp;initialise&nbsp;this&nbsp;variable&nbsp;or&nbsp;to&nbsp;<br>
override&nbsp;this&nbsp;function.</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>:<br>
<dl><dt><a name="DistanceConstraint-add_listener"><strong>add_listener</strong></a>(self, listener)</dt><dd><tt>add&nbsp;a&nbsp;listener&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="DistanceConstraint-rem_listener"><strong>rem_listener</strong></a>(self, listener)</dt><dd><tt>remove&nbsp;a&nbsp;listener&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="DistanceConstraint-send_notify"><strong>send_notify</strong></a>(self, message)</dt><dd><tt>send&nbsp;a&nbsp;message&nbsp;to&nbsp;all&nbsp;listeners</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="FixConstraint">class <strong>FixConstraint</strong></a>(<a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;constraint&nbsp;to&nbsp;fix&nbsp;a&nbsp;point&nbsp;relative&nbsp;to&nbsp;the&nbsp;coordinate&nbsp;system<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="geosolver.geometric.html#FixConstraint">FixConstraint</a></dd>
<dd><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a></dd>
<dd><a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a></dd>
<dd><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="FixConstraint-__init__"><strong>__init__</strong></a>(self, var, pos)</dt><dd><tt>Create&nbsp;a&nbsp;new&nbsp;<a href="#DistanceConstraint">DistanceConstraint</a>&nbsp;instance<br>
&nbsp;<br>
keyword&nbsp;args:<br>
&nbsp;var&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;point&nbsp;variable&nbsp;name&nbsp;<br>
&nbsp;pos&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;the&nbsp;position&nbsp;parameter</tt></dd></dl>
<dl><dt><a name="FixConstraint-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="FixConstraint-satisfied"><strong>satisfied</strong></a>(self, mapping)</dt><dd><tt>return&nbsp;True&nbsp;iff&nbsp;mapping&nbsp;from&nbsp;variable&nbsp;names&nbsp;to&nbsp;points&nbsp;satisfies&nbsp;constraint</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a>:<br>
<dl><dt><a name="FixConstraint-get_parameter"><strong>get_parameter</strong></a>(self)</dt><dd><tt>get&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="FixConstraint-set_parameter"><strong>set_parameter</strong></a>(self, value)</dt><dd><tt>set&nbsp;parameter&nbsp;value&nbsp;and&nbsp;notify&nbsp;any&nbsp;listeners</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>:<br>
<dl><dt><a name="FixConstraint-variables"><strong>variables</strong></a>(self)</dt><dd><tt>return&nbsp;a&nbsp;list&nbsp;of&nbsp;variables<br>
&nbsp;<br>
If&nbsp;an&nbsp;attribute&nbsp;'_variables'&nbsp;has&nbsp;been&nbsp;defined,&nbsp;a&nbsp;new&nbsp;list<br>
with&nbsp;the&nbsp;contents&nbsp;of&nbsp;that&nbsp;attribute&nbsp;will&nbsp;be&nbsp;returned.&nbsp;<br>
Subclasses&nbsp;may&nbsp;choose&nbsp;to&nbsp;initialise&nbsp;this&nbsp;variable&nbsp;or&nbsp;to&nbsp;<br>
override&nbsp;this&nbsp;function.</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>:<br>
<dl><dt><a name="FixConstraint-add_listener"><strong>add_listener</strong></a>(self, listener)</dt><dd><tt>add&nbsp;a&nbsp;listener&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="FixConstraint-rem_listener"><strong>rem_listener</strong></a>(self, listener)</dt><dd><tt>remove&nbsp;a&nbsp;listener&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="FixConstraint-send_notify"><strong>send_notify</strong></a>(self, message)</dt><dd><tt>send&nbsp;a&nbsp;message&nbsp;to&nbsp;all&nbsp;listeners</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="GeometricCluster">class <strong>GeometricCluster</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>Represents&nbsp;the&nbsp;result&nbsp;of&nbsp;solving&nbsp;a&nbsp;<a href="#GeometricProblem">GeometricProblem</a>.&nbsp;A&nbsp;cluster&nbsp;is&nbsp;a&nbsp;list&nbsp;of&nbsp;<br>
point&nbsp;variable&nbsp;names&nbsp;and&nbsp;a&nbsp;list&nbsp;of&nbsp;solutions&nbsp;for<br>
those&nbsp;variables.&nbsp;A&nbsp;solution&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;mapping&nbsp;variable&nbsp;names&nbsp;to<br>
points.&nbsp;The&nbsp;cluster&nbsp;also&nbsp;keeps&nbsp;a&nbsp;list&nbsp;of&nbsp;sub-clusters&nbsp;(<a href="#GeometricCluster">GeometricCluster</a>)<br>
and&nbsp;a&nbsp;set&nbsp;of&nbsp;flags,&nbsp;indicating&nbsp;incidental/structural<br>
under/overconstrained<br>
&nbsp;<br>
instance&nbsp;attributes:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;variables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;list&nbsp;of&nbsp;point&nbsp;variable&nbsp;names<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solutions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;list&nbsp;of&nbsp;solutions.&nbsp;Each&nbsp;solution&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapping&nbsp;variable&nbsp;names&nbsp;to&nbsp;vectors.&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;list&nbsp;of&nbsp;sub-clusters&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;meaning<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;well&nbsp;constrained<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I_OVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incicental&nbsp;over-constrained<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I_UNDER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incidental&nbsp;under-constrained<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_OVER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;structural&nbsp;overconstrained&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_UNDER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;structural&nbsp;underconstrained<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNSOLVED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsolved<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="GeometricCluster-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>initialise&nbsp;an&nbsp;empty&nbsp;new&nbsp;cluster</tt></dd></dl>
<dl><dt><a name="GeometricCluster-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>I_OVER</strong> = 'incidental over-constrained'</dl>
<dl><dt><strong>I_UNDER</strong> = 'incidental under-constrained'</dl>
<dl><dt><strong>OK</strong> = 'well constrained'</dl>
<dl><dt><strong>S_OVER</strong> = 'structral over-constrained'</dl>
<dl><dt><strong>S_UNDER</strong> = 'structural under-constrained'</dl>
<dl><dt><strong>UNSOLVED</strong> = 'unsolved'</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="GeometricProblem">class <strong>GeometricProblem</strong></a>(<a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>, <a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;geometric&nbsp;constraint&nbsp;problem&nbsp;with&nbsp;a&nbsp;prototype.<br>
&nbsp;<br>
A&nbsp;problem&nbsp;consists&nbsp;of&nbsp;point&nbsp;variables&nbsp;(just&nbsp;variables&nbsp;for&nbsp;short),&nbsp;prototype<br>
points&nbsp;for&nbsp;each&nbsp;variable&nbsp;and&nbsp;constraints.<br>
Variables&nbsp;are&nbsp;just&nbsp;names&nbsp;and&nbsp;can&nbsp;be&nbsp;any&nbsp;hashable&nbsp;object&nbsp;(recommend&nbsp;strings)<br>
Supported&nbsp;constraints&nbsp;are&nbsp;instances&nbsp;of&nbsp;<a href="#DistanceConstraint">DistanceConstraint</a>,<a href="#AngleConstraint">AngleConstraint</a>,<br>
<a href="#FixConstraint">FixConstraint</a>&nbsp;or&nbsp;SelectionConstraint.<br>
&nbsp;<br>
Prototype&nbsp;points&nbsp;are&nbsp;instances&nbsp;of&nbsp;vector.<br>
&nbsp;<br>
<a href="#GeometricProblem">GeometricProblem</a>&nbsp;listens&nbsp;for&nbsp;changes&nbsp;in&nbsp;constraint&nbsp;parameters&nbsp;and&nbsp;passes<br>
these&nbsp;changes,&nbsp;and&nbsp;changes&nbsp;in&nbsp;the&nbsp;system&nbsp;of&nbsp;constraints&nbsp;and&nbsp;the&nbsp;prototype,&nbsp;<br>
to&nbsp;any&nbsp;other&nbsp;listerers&nbsp;(e.g.&nbsp;<a href="#GeometricSolver">GeometricSolver</a>)&nbsp;<br>
&nbsp;<br>
instance&nbsp;attributes:<br>
&nbsp;&nbsp;cg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;a&nbsp;ConstraintGraph&nbsp;instance<br>
&nbsp;&nbsp;prototype&nbsp;&nbsp;-&nbsp;a&nbsp;dictionary&nbsp;mapping&nbsp;variables&nbsp;to&nbsp;points<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="geosolver.geometric.html#GeometricProblem">GeometricProblem</a></dd>
<dd><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a></dd>
<dd><a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="GeometricProblem-__init__"><strong>__init__</strong></a>(self, dimension)</dt><dd><tt>initialize&nbsp;a&nbsp;new&nbsp;problem</tt></dd></dl>
<dl><dt><a name="GeometricProblem-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="GeometricProblem-add_constraint"><strong>add_constraint</strong></a>(self, con)</dt><dd><tt>add&nbsp;a&nbsp;constraint</tt></dd></dl>
<dl><dt><a name="GeometricProblem-add_point"><strong>add_point</strong></a>(self, variable, position)</dt><dd><tt>add&nbsp;a&nbsp;point&nbsp;variable&nbsp;with&nbsp;a&nbsp;prototype&nbsp;position</tt></dd></dl>
<dl><dt><a name="GeometricProblem-get_angle"><strong>get_angle</strong></a>(self, a, b, c)</dt><dd><tt>return&nbsp;the&nbsp;angle&nbsp;constraint&nbsp;on&nbsp;given&nbsp;points,&nbsp;or&nbsp;None</tt></dd></dl>
<dl><dt><a name="GeometricProblem-get_distance"><strong>get_distance</strong></a>(self, a, b)</dt><dd><tt>return&nbsp;the&nbsp;distance&nbsp;constraint&nbsp;on&nbsp;given&nbsp;points,&nbsp;or&nbsp;None</tt></dd></dl>
<dl><dt><a name="GeometricProblem-get_fix"><strong>get_fix</strong></a>(self, p)</dt><dd><tt>return&nbsp;the&nbsp;fix&nbsp;constraint&nbsp;on&nbsp;given&nbsp;point,&nbsp;or&nbsp;None</tt></dd></dl>
<dl><dt><a name="GeometricProblem-get_point"><strong>get_point</strong></a>(self, variable)</dt><dd><tt>get&nbsp;prototype&nbsp;position&nbsp;of&nbsp;point&nbsp;variable</tt></dd></dl>
<dl><dt><a name="GeometricProblem-has_point"><strong>has_point</strong></a>(self, variable)</dt></dl>
<dl><dt><a name="GeometricProblem-receive_notify"><strong>receive_notify</strong></a>(self, object, notify)</dt><dd><tt>When&nbsp;notified&nbsp;of&nbsp;changed&nbsp;constraint&nbsp;parameters,&nbsp;pass&nbsp;on&nbsp;to&nbsp;listeners</tt></dd></dl>
<dl><dt><a name="GeometricProblem-rem_constraint"><strong>rem_constraint</strong></a>(self, con)</dt><dd><tt>remove&nbsp;a&nbsp;constraint&nbsp;from&nbsp;the&nbsp;constraint&nbsp;system</tt></dd></dl>
<dl><dt><a name="GeometricProblem-rem_point"><strong>rem_point</strong></a>(self, var)</dt><dd><tt>remove&nbsp;a&nbsp;point&nbsp;variable&nbsp;from&nbsp;the&nbsp;constraint&nbsp;system</tt></dd></dl>
<dl><dt><a name="GeometricProblem-set_point"><strong>set_point</strong></a>(self, variable, position)</dt><dd><tt>set&nbsp;prototype&nbsp;position&nbsp;of&nbsp;point&nbsp;variable</tt></dd></dl>
<dl><dt><a name="GeometricProblem-verify"><strong>verify</strong></a>(self, solution)</dt><dd><tt>returns&nbsp;true&nbsp;iff&nbsp;all&nbsp;constraints&nbsp;satisfied&nbsp;by&nbsp;given&nbsp;solution.&nbsp;<br>
solution&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;mapping&nbsp;variables&nbsp;(names)&nbsp;to&nbsp;values&nbsp;(points)</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>:<br>
<dl><dt><a name="GeometricProblem-add_listener"><strong>add_listener</strong></a>(self, listener)</dt><dd><tt>add&nbsp;a&nbsp;listener&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="GeometricProblem-rem_listener"><strong>rem_listener</strong></a>(self, listener)</dt><dd><tt>remove&nbsp;a&nbsp;listener&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="GeometricProblem-send_notify"><strong>send_notify</strong></a>(self, message)</dt><dd><tt>send&nbsp;a&nbsp;message&nbsp;to&nbsp;all&nbsp;listeners</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>:<br>
<dl><dt><a name="GeometricProblem-add_notifier"><strong>add_notifier</strong></a>(self, notifier)</dt><dd><tt>add&nbsp;a&nbsp;notifier&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;notifiers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="GeometricProblem-rem_notifier"><strong>rem_notifier</strong></a>(self, notifier)</dt><dd><tt>remove&nbsp;a&nbsp;notifier&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;notifiers'&nbsp;list)</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="GeometricSolver">class <strong>GeometricSolver</strong></a>(<a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>The&nbsp;<a href="#GeometricSolver">GeometricSolver</a>&nbsp;monitors&nbsp;changes&nbsp;in&nbsp;a&nbsp;<a href="#GeometricProblem">GeometricProblem</a>&nbsp;and&nbsp;<br>
mappes&nbsp;any&nbsp;changes&nbsp;to&nbsp;corresponding&nbsp;changes&nbsp;in&nbsp;a&nbsp;<a href="#GeometricCluster">GeometricCluster</a><br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="GeometricSolver-__init__"><strong>__init__</strong></a>(self, problem)</dt><dd><tt>Create&nbsp;a&nbsp;new&nbsp;<a href="#GeometricSolver">GeometricSolver</a>&nbsp;instance<br>
&nbsp;<br>
keyword&nbsp;args<br>
&nbsp;problem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;the&nbsp;<a href="#GeometricProblem">GeometricProblem</a>&nbsp;instance&nbsp;to&nbsp;be&nbsp;monitored&nbsp;for&nbsp;changes</tt></dd></dl>
<dl><dt><a name="GeometricSolver-get_constrainedness"><strong>get_constrainedness</strong></a>(self)</dt></dl>
<dl><dt><a name="GeometricSolver-get_result"><strong>get_result</strong></a>(self)</dt><dd><tt>returns&nbsp;the&nbsp;result&nbsp;as&nbsp;a&nbsp;<a href="#GeometricCluster">GeometricCluster</a></tt></dd></dl>
<dl><dt><a name="GeometricSolver-receive_notify"><strong>receive_notify</strong></a>(self, object, message)</dt><dd><tt>Take&nbsp;notice&nbsp;of&nbsp;changes&nbsp;in&nbsp;constraint&nbsp;graph</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Listener">geosolver.notify.Listener</a>:<br>
<dl><dt><a name="GeometricSolver-add_notifier"><strong>add_notifier</strong></a>(self, notifier)</dt><dd><tt>add&nbsp;a&nbsp;notifier&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;notifiers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="GeometricSolver-rem_notifier"><strong>rem_notifier</strong></a>(self, notifier)</dt><dd><tt>remove&nbsp;a&nbsp;notifier&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;notifiers'&nbsp;list)</tt></dd></dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="ParametricConstraint">class <strong>ParametricConstraint</strong></a>(<a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>, <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>A&nbsp;constraint&nbsp;with&nbsp;a&nbsp;parameter&nbsp;and&nbsp;notification&nbsp;when&nbsp;parameter&nbsp;changes<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="geosolver.geometric.html#ParametricConstraint">ParametricConstraint</a></dd>
<dd><a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a></dd>
<dd><a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="ParametricConstraint-__init__"><strong>__init__</strong></a>(self)</dt><dd><tt>initialize&nbsp;<a href="#ParametricConstraint">ParametricConstraint</a></tt></dd></dl>
<dl><dt><a name="ParametricConstraint-get_parameter"><strong>get_parameter</strong></a>(self)</dt><dd><tt>get&nbsp;parameter&nbsp;value</tt></dd></dl>
<dl><dt><a name="ParametricConstraint-set_parameter"><strong>set_parameter</strong></a>(self, value)</dt><dd><tt>set&nbsp;parameter&nbsp;value&nbsp;and&nbsp;notify&nbsp;any&nbsp;listeners</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.constraint.html#Constraint">geosolver.constraint.Constraint</a>:<br>
<dl><dt><a name="ParametricConstraint-satisfied"><strong>satisfied</strong></a>(self, mapping)</dt><dd><tt>return&nbsp;true&nbsp;iff&nbsp;constraint&nbsp;is&nbsp;satisfied&nbsp;by&nbsp;given&nbsp;mapping<br>
from&nbsp;variables&nbsp;to&nbsp;values&nbsp;(dictionary)</tt></dd></dl>
<dl><dt><a name="ParametricConstraint-variables"><strong>variables</strong></a>(self)</dt><dd><tt>return&nbsp;a&nbsp;list&nbsp;of&nbsp;variables<br>
&nbsp;<br>
If&nbsp;an&nbsp;attribute&nbsp;'_variables'&nbsp;has&nbsp;been&nbsp;defined,&nbsp;a&nbsp;new&nbsp;list<br>
with&nbsp;the&nbsp;contents&nbsp;of&nbsp;that&nbsp;attribute&nbsp;will&nbsp;be&nbsp;returned.&nbsp;<br>
Subclasses&nbsp;may&nbsp;choose&nbsp;to&nbsp;initialise&nbsp;this&nbsp;variable&nbsp;or&nbsp;to&nbsp;<br>
override&nbsp;this&nbsp;function.</tt></dd></dl>
<hr>
Methods inherited from <a href="geosolver.notify.html#Notifier">geosolver.notify.Notifier</a>:<br>
<dl><dt><a name="ParametricConstraint-add_listener"><strong>add_listener</strong></a>(self, listener)</dt><dd><tt>add&nbsp;a&nbsp;listener&nbsp;to&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;to&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="ParametricConstraint-rem_listener"><strong>rem_listener</strong></a>(self, listener)</dt><dd><tt>remove&nbsp;a&nbsp;listener&nbsp;from&nbsp;the&nbsp;list&nbsp;(and&nbsp;self&nbsp;from&nbsp;listers'&nbsp;list)</tt></dd></dl>
<dl><dt><a name="ParametricConstraint-send_notify"><strong>send_notify</strong></a>(self, message)</dt><dd><tt>send&nbsp;a&nbsp;message&nbsp;to&nbsp;all&nbsp;listeners</tt></dd></dl>
</td></tr></table></td></tr></table>
</body></html>