@ti.kernel
def initialize(self):
for i in range(self.n_particles):
self.pos[i] = [ti.random(), ti.random()]
self.vel[i] = [0, 0]
self.acc[i] = self.gravity
显然这是一个创建粒子并初始化其位置、速度、加速度的过程
但是倘使我给予粒子半径,并且不希望创建的粒子相互之间存在接触,我创建了如下的代码
@ti.kernel
def initialize(self):
i = 0
while(i < self.n_particles):
self.pos[i] = [ti.random(), ti.random()]
flag = 0
j = 0
while(j < i):
distance = (self.pos[i] - self.pos[j]).norm()
if distance < 2 * self.circle_radius:
flag = 1
break
j = j + 1
if flag == 0:
self.vel[i] = [0, 0]
self.acc[i] = self.gravity
i = i + 1
这段代码类的初始化过程中被调用,用于生成一组粒子并在二维空间中确保它们之间的距离大于给定的circle_radius。经我检查,在逻辑上并无问题,但是在具体过程中会出现错误,程序会一直卡在这一段过程中,加断点测试也找不到,麻烦请教一下是什么问题