当我在pygame中开展项目时,我注意到pygame.draw.line()
和pygame.draw.lines()
的工作方式有所不同。我想要的结果是由pygame.draw.lines()
做出的,它没有像pygame.draw.line()
那样做出奇怪的行。但是我需要在pygame模块PIL
中重复这个过程,因为它没有一次绘制多行的功能。
因此,为了模仿这个过程,我深入研究了上述两个函数的内部编码。我得到的是大量的C编码和指针对我来说太过分了。请参阅here。
我确实发现了一些可疑的代码,我完全不了解。但是,如果我这样做,我想我可以将其编码为python。所以我需要帮助...
for(loop = 1; loop < length; ++loop)
{
item = PySequence_GetItem(points, loop);
result = TwoIntsFromObj(item, &x, &y);
Py_DECREF(item);
if(!result) continue; /*note, we silently skip over bad points :[ */
我可以推断PySequence GetItem()
返回与循环对应的PyObject
(这是索引)。但TwoIntsFromObj()
对我来说太过分了。请参阅here。
编辑:
所以为了清楚一点,我会解释我想要做的事情。我想将图片表达成一系列Z阶曲线。这些步骤比“黑暗”更大。零件和更小的&#34;光&#34;部分。我做了一个算法,一个递归函数用于&#34;替换&#34;较小的密集区域。但是for
的{{1}}循环并不像pygame.draw.line
那样得到很好的结果。图片位于链接下方...
abnormal Z-order curve
normal Z-order curve
有趣的是,它甚至不是连续的:(
它会与我的pygame.draw.lines
循环有关吗?
for
复杂性的推理有点难以解释。代码只处理点(浮点类型)的(x,y)位置。两个表达式的pointList相同。