def resolve(self): dx = self.p2.x - self.p1.x dy = self.p2.y - self.p1.y dist = math.sqrt((dx ** 2) + (dy ** 2)) exr = dist / ((dist - self.length) / 2) nx = exr * dx ny = exr * dy if not self.p1.fixed: self.p1.x += nx self.p1.y += ny else self.p2.x -= nx self.p2.y -= ny if not self.p2.fixed: self.p2.x -= nx self.p2.y -= ny else self.p1.x += nx self.p1.y += ny