关于Taichi logo的绘制原理

最近才开始跟随学习B站课程,在阅读稀疏数据结构的taichi_logo代码时有一些读不懂。
并且还没有在网上搜到解答,所以在社区请教一下各位同学几个问题:
① 这一堆整除的目的是什么呀?

 res = n + n // 4 + n // 16 + n // 64

② scatter里面的整除又是什么呢?

@ti.func
def scatter(i):
    return i + i // 4 + i // 16 + i // 64 + 2

③这里的t是一堆bool的相加吗,最后的除以4又是什么意思呀?

@ti.kernel
def paint():
    for i, j in ti.ndrange(n, n):
        t = x[i, j]
        block1_index = ti.rescale_index(x, block1, [i, j])
        block2_index = ti.rescale_index(x, block2, [i, j])
        block3_index = ti.rescale_index(x, block3, [i, j])
        t += ti.is_active(block1, block1_index)
        t += ti.is_active(block2, block2_index)
        t += ti.is_active(block3, block3_index)
        img[scatter(i), scatter(j)] = 1 - t / 4

感觉问题实在有点小白,路过的同学有兴趣解答一下呗~
(或者说能推荐一些其他学习这种小白问题的渠道嘛?我就不在这里耽误大家时间,争取下次问点有技术含量的问题嘿嘿嘿)

3 个赞

也许回复的有点晚了,但是还是希望对你有帮助。
第一个问题:整除的目的是为了画出格子的边界,你可以发现Image的大小是680680是比x的size 512512大的,多出来的pixel就是各个格子的边界线。
第二个问题:其实理解了第一个问题就明白了,这里可以理解为x的坐标到image坐标的映射。
第三个问题:这里的bool是来显示该格子是否激活的,通过image=1-t/4的等式会在图上显示logo转动时格子是否激活,越接近白色则越没有激活(image=1),黑色则是激活的(image=0)。