PySequence_GetItem()和TwoIntsFromObj()如何工作?

时间:2018-06-03 09:10:08

标签: python pygame python-imaging-library cpython

当我在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相同。

0 个答案:

没有答案