<p>我要做的是创建一个圆,然后删除该圆中所有超出给定键的(整数)点(例如圆和某些几何图形的面积相交)。几何图形表示为<code>(x,y)</code>元组的列表,圆也是如此(附加的<code>O</code>变量等于其中心)。我的密码是:</p>
<pre><code>copy=circle
for bound in bounds:
for point in circle:
if checkPointSegmentIntersection(O,point,bound):
copy.remove(point)
print bound, point
print copy
</code></pre>
<p>我测试的圆心现在等于<code>(5,8)</code>,半径等于3。圆的一个边界点是<code>(5,11)</code>,边界上有一个点等于<code>(5,10)</code>。所以点<code>(5,11)</code>和{<cd5>}应该从<code>copy</code>中删除。<code>(5,10)</code>有,但是{<cd4>}没有。而且,这对<code>(5,10) (5,11)</code>甚至没有出现在输出中,<code>(5,10) (5,10)</code>却出现了)!内部循环继续使用绑定相等<code>(5,10)</code>,<code>(5,11)</code>是唯一省略的点。<code>(5,11)</code>确实出现在其他外循环迭代中。发生什么事?什么会导致循环忽略其中一个点?在</p>
<p>一点背景知识:这段代码在django服务器上执行,<code>bounds</code>列表相当大,它包含10-15个元素,我使用的是python2.7。如果<code>checkPointSegmentIntersection(A,B,X)</code>在<code>A</code>和{<cd21>}之间的线段上,<code>checkPointSegmentIntersection(A,B,X)</code>函数工作并返回{<cd18>}。我也愿意接受任何不同的方法来解决手头的问题。在</p>
<p>谢谢!在</p>