def stabilize(self):
threshold = 0.001
for i, (n1, n2) in enumerate(Bones):
node1 = self.m_nodes[n1]
node2 = self.m_nodes[n2]
pos1 = node1.pos()
pos2 = node2.pos()
dist = pos1 - pos2
length = math.hypot(dist.x(), dist.y())
diff = (length - self.m_perfectBoneLengths[i]) / length
p = dist * (0.5 * diff)
if p.x() > threshold and p.y() > threshold:
pos1 -= p
pos2 += p
node1.setPos(pos1)
node2.setPos(pos2)
评论列表
文章目录