课件与录像汇总

Lec 1 导论

Lec 2 拉格朗日视角(1)

Lec 3 拉格朗日视角(2)

Lec 4 欧拉视角

Lec 5 多体问题与涡方法

Lec 6 有限元与拓扑优化

Lec 7 混合欧拉-拉格朗日视角 (1)

Lec 8 混合欧拉-拉格朗日视角 (2)

Lec 9 高性能物理模拟

Lec 10 大结局

17 Likes

原谅我太爱fractal了,看到就忍不住了。 :smiling_face_with_three_hearts:谢谢胡老师送的六一礼物

import taichi as ti
ti.init(arch=ti.gpu)
n = 320
pixels = ti.var(dt=ti.f32, shape=(n * 2, n))

@ti.func
def complex_power(z, power: ti.i32):
    r = ti.sqrt(z[0]**2 + z[1]**2)
    theta = ti.atan2(z[1], z[0])
    return ti.Vector([r**power * ti.cos(power*theta), r**power * ti.sin(power*theta)])

@ti.kernel
def paint(t: ti.f32, power: ti.i32):
    for i, j in pixels:  # Parallized over all pixels
        # Julia Set
        freq = 1.0 / power
        c = ti.Vector([0.7885 * ti.cos(freq*t), 0.7885 * ti.sin(freq*t)])
        z = ti.Vector([i / n - 1, j / n - 0.5]) * 2

        iterations = 0
        while z.norm() < 20 and iterations < 50:
            z = complex_power(z, power) + c
            iterations += 1
        pixels[i, j] = 1 - iterations * 0.02

power = eval(input("Power of z -> "))
gui = ti.GUI("Julia Set", res=(n * 2, n))

for i in range(1000000):
    paint(i * 0.03, power)
    gui.set_image(pixels)
    gui.show()
8 Likes

有意思呀!我跑了你的程序z=1,2,3,4,5,6,7,...,原来每个数看起来结果都不太一样。可否单独开一个帖子,顺便贴几个图?

1 Like

是的,fractal根据z的power不同出现在实数部分的样子不同。 明天看看有空的话写个帖子,今晚先睡了 :partying_face:

3 Likes

-1 -2 -3 更有意思!完全不是传统的分形图案了,反而是一堆小球在运动

3 Likes

太神奇了

请问胡老师会讲解 Giga-Voxel Narrowband TopOpt 代码吗,谢谢!

lec3 的视频呢哭唧唧

后面应该会讲一讲简单的linear elasticity FEM (quad mesh),也会提到multigrid和topology optimization,但是那篇文章里面的算法有点硬核,所以不会过于深入。