Lecture4里advection代码的问题

第四讲上课时用到的advection.py里面有一个用来画太极的函数:

@ti.kernel
def paint():
    for i, j in ti.ndrange(n * 4, n * 4):
        ret = 1 - inside_taichi(Vector2(i / n / 4, j / n / 4))
        x[i // 4, j // 4] += ret / 16

观察了一下好像是会把一些黑白边界的地方用介于0和1之间的值来填充,这样做有什么特殊的理由吗?我自己试了一下好像不做这个处理,只做0和1的2值填充也没有特别问题。
不过这个招还是挺酷炫的,没有增加网格却获取了4*n的解析度的感觉。。在数值计算或者学术上这个小技巧有正式的名称或者理论吗?

1 个赞

做了 4x4 的超采样(supersampling)抗锯齿吧

3 个赞

多谢!看来就是这个了呢!

另外,搭车问个不相关问题,这个太极图如果把他看作是白色的地方镂空的一个圆盘,要求盘对中心的转动惯量的话可以怎么实现?得把图像先用极坐标表示吗

目测直接改 paint() 就行。

转动惯量 J = m r^2 。0~1 灰度当密度,乘一个总面积,再乘上距离的平方(改一下 inside 函数),求和,应该就行了。

1 个赞